QJSManagedValue Class
QJSManagedValue는 QJSEngine.. . 더보기...
헤더: | #include <QJSManagedValue> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
qmake: | QT += qml |
이후: | Qt 6.1 |
공용 형
enum | Type { Undefined, Boolean, Number, String, Object, …, Function } |
공용 함수
QJSManagedValue() | |
QJSManagedValue(QJSValue value, QJSEngine *engine) | |
QJSManagedValue(const QJSPrimitiveValue &value, QJSEngine *engine) | |
QJSManagedValue(const QString &string, QJSEngine *engine) | |
QJSManagedValue(const QVariant &variant, QJSEngine *engine) | |
QJSManagedValue(QJSManagedValue &&other) | |
~QJSManagedValue() | |
QJSValue | call(const QJSValueList &arguments = {}) const |
QJSValue | callAsConstructor(const QJSValueList &arguments = {}) const |
QJSValue | callWithInstance(const QJSValue &instance, const QJSValueList &arguments = {}) const |
bool | deleteProperty(const QString &name) |
bool | deleteProperty(quint32 arrayIndex) |
QJSEngine * | engine() const |
bool | equals(const QJSManagedValue &other) const |
bool | hasOwnProperty(const QString &name) const |
bool | hasOwnProperty(quint32 arrayIndex) const |
bool | hasProperty(const QString &name) const |
bool | hasProperty(quint32 arrayIndex) const |
bool | isArray() const |
bool | isBoolean() const |
bool | isDate() const |
bool | isError() const |
bool | isFunction() const |
bool | isInteger() const |
bool | isNull() const |
bool | isNumber() const |
bool | isObject() const |
bool | isQMetaObject() const |
bool | isQObject() const |
bool | isRegularExpression() const |
bool | isString() const |
bool | isSymbol() const |
bool | isUndefined() const |
bool | isUrl() const |
bool | isVariant() const |
QJSValue | property(const QString &name) const |
QJSValue | property(quint32 arrayIndex) const |
QJSManagedValue | prototype() const |
void | setProperty(const QString &name, const QJSValue &value) |
void | setProperty(quint32 arrayIndex, const QJSValue &value) |
void | setPrototype(const QJSManagedValue &prototype) |
bool | strictlyEquals(const QJSManagedValue &other) const |
bool | toBoolean() const |
QDateTime | toDateTime() const |
int | toInteger() const |
QJSValue | toJSValue() const |
double | toNumber() const |
QJSPrimitiveValue | toPrimitive() const |
const QMetaObject * | toQMetaObject() const |
QObject * | toQObject() const |
QRegularExpression | toRegularExpression() const |
QString | toString() const |
QUrl | toUrl() const |
QVariant | toVariant() const |
QJSManagedValue::Type | type() const |
QJSManagedValue & | operator=(QJSManagedValue &&other) |
상세 설명
QJSManagedValue 클래스는 자바스크립트 자체에서 상호작용할 수 있는 대부분의 방법으로 자바스크립트 값과 상호작용할 수 있게 해줍니다. 프로퍼티와 프로토타입을 가져오고 설정할 수 있으며 배열에 액세스할 수 있습니다. 또한 값을 JavaScript 객체의 Qt 대응 값으로 변환할 수도 있습니다. 예를 들어 Url 객체를 QUrl 로 변환할 수 있습니다.
QJSManagedValue는 항상 특정 QJSEngine 에 바인딩됩니다. 독립적으로 사용할 수 없습니다. 즉, 한 엔진의 QJSManagedValue가 다른 엔진의 속성이나 QJSManagedValue의 프로토타입이 될 수 없습니다.
QJSValue 과는 달리 QJSManagedValue가 보유한 거의 모든 값은 자바스크립트 힙에 존재합니다. 인라인 또는 관리되지 않는 저장소가 없습니다. 따라서 원시 값의 프로토타입을 가져올 수 있고 문자열의 length
속성을 가져올 수 있습니다.
기본값으로 구성되거나 QJSManagedValues에서 이동된 값만 JavaScript 힙에 값을 보유하지 않습니다. 이들은 속성이나 프로토타입이 없는 undefined
을 나타냅니다.
또한 QJSValue 와는 달리 QJSManagedValue는 자바스크립트 예외를 포착하지 않습니다. QJSManagedValue에 대한 연산으로 인해 오류가 발생하면 일반적으로 undefined
값을 반환하고 QJSEngine::hasError()은 true
을 반환합니다. 그런 다음 QJSEngine::catchError()를 사용하여 예외를 잡거나 재량에 따라 스택 위로 예외를 전달할 수 있습니다.
참고: 자바스크립트 힙의 값에 대한 참조는 소멸 시 해제되어야 하므로 QJSManagedValue를 다른 스레드로 이동할 수 없습니다. 파괴는 새 스레드에서 이루어지며, 그러면 원래 스레드의 가비지 수집기와 경쟁 조건이 생성됩니다. 이는 또한 엔진의 수명을 초과하여 QJSManagedValue를 보유할 수 없음을 의미합니다.
권장되는 작업 방법은 스택에서 QJSManagedValue를 생성하는 것으로, QJSValue 로 이동하여 엔진을 추가한 다음 필요한 작업을 수행한 다음 마지막으로 QJSValue 로 다시 이동하여 저장하는 것입니다. QJSManagedValue와 QJSValue 사이를 이동하는 것은 매우 빠릅니다.
멤버 유형 문서
enum QJSManagedValue::Type
이 열거형은 ECMA-262에 지정된 대로 JavaScript 네이티브 유형을 나타냅니다.
Constant | 값 | 설명 |
---|---|---|
QJSManagedValue::Undefined | 0 | undefined 유형 |
QJSManagedValue::Boolean | 1 | boolean 유형 |
QJSManagedValue::Number | 2 | number 유형 |
QJSManagedValue::String | 3 | string 유형 |
QJSManagedValue::Object | 4 | object 유형 |
QJSManagedValue::Symbol | 5 | symbol 유형 |
QJSManagedValue::Function | 6 | function 타입 |
null
값은 그 자체의 유형이 아니라 특수한 종류의 객체라는 점에 유의하세요. isNull () 메서드를 사용하여 이 조건에 대해 QJSManagedValue 를 쿼리할 수 있습니다. 또한 자바스크립트에는 정수 타입이 없지만 정수 전용 연산에 대비하여 숫자를 특수하게 처리하는 방법을 알고 있습니다. isInteger () 메서드를 사용하여 QJSManagedValue 에 쿼리하여 이러한 처리 결과를 보유하고 있는지 확인할 수 있습니다.
멤버 함수 문서
[constexpr noexcept]
QJSManagedValue::QJSManagedValue()
자바스크립트 undefined
값을 나타내는 QJSManagedValue를 생성합니다. 이 값은 자바스크립트 힙에 저장되지 않는 유일한 값입니다. 기본으로 구성된 QJSManagedValue에서 engine()를 호출하면 nullptr이 반환됩니다.
QJSManagedValue::QJSManagedValue(QJSValue value, QJSEngine *engine)
engine 의 힙을 사용하여 value 에서 QJSManagedValue 를 생성합니다. value 자체가 관리되고 소속 엔진이 engine 이 아닌 경우 결과는 undefined
값이 되고 경고가 생성됩니다.
QJSManagedValue::QJSManagedValue(const QJSPrimitiveValue &value, QJSEngine *engine)
engine 의 힙을 사용하여 value 에서 QJSManagedValue 를 생성합니다.
QJSManagedValue::QJSManagedValue(const QString &string, QJSEngine *engine)
engine 의 힙을 사용하여 string 에서 QJSManagedValue 를 생성합니다.
QJSManagedValue::QJSManagedValue(const QVariant &variant, QJSEngine *engine)
engine 의 힙을 사용하여 variant 에서 QJSManagedValue 를 생성합니다.
QJSManagedValue::QJSManagedValue(QJSManagedValue &&other)
Move-구축은 other 에서 QJSManagedValue를 생성합니다. 그러면 other 은 정의되지 않고 어떤 엔진에도 속하지 않는 기본 구성 상태로 남습니다.
[noexcept]
QJSManagedValue::~QJSManagedValue()
QJSManagedValue 을 파괴합니다.
참고: 이렇게 하면 자바스크립트 힙에 있는 메모리 슬롯이 해제됩니다. QJSManagedValue 이 속한 QJSEngine 이 있는 스레드가 아닌 다른 스레드에서 을 파괴해서는 안 됩니다.
QJSValue QJSManagedValue::call(const QJSValueList &arguments = {}) const
QJSManagedValue 이 JavaScript 함수 객체를 나타내는 경우, 주어진 arguments 으로 호출하고 결과를 반환합니다. 그렇지 않으면 JavaScript undefined
값을 반환합니다.
arguments 은 원시값이거나 이 QJSManagedValue 과 동일한 QJSEngine 에 속해야 합니다. 그렇지 않으면 호출이 수행되지 않고 JavaScript undefined
값이 반환됩니다.
QJSValue QJSManagedValue::callAsConstructor(const QJSValueList &arguments = {}) const
QJSManagedValue 이 JavaScript 함수 객체를 나타내는 경우, 주어진 arguments 을 사용하여 생성자로 호출하고 결과를 반환합니다. 그렇지 않으면 JavaScript undefined
값을 반환합니다.
arguments 은 원시값이거나 이 QJSManagedValue 과 동일한 QJSEngine 에 속해야 합니다. 그렇지 않으면 호출이 수행되지 않고 JavaScript undefined
값이 반환됩니다.
QJSValue QJSManagedValue::callWithInstance(const QJSValue &instance, const QJSValueList &arguments = {}) const
QJSManagedValue 이 JavaScript 함수 객체를 나타내는 경우, 주어진 arguments 을 사용하여 instance 에서 호출하고 결과를 반환합니다. 그렇지 않으면 JavaScript undefined
값을 반환합니다.
arguments 및 instance 은 원시값이거나 이 QJSManagedValue 과 동일한 QJSEngine 에 속해야 합니다. 그렇지 않으면 호출이 수행되지 않고 JavaScript undefined
값이 반환됩니다.
bool QJSManagedValue::deleteProperty(const QString &name)
이 QJSManagedValue 에서 name 속성을 삭제합니다. 삭제에 성공하면 true
를 반환하고, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::deleteProperty(quint32 arrayIndex)
arrayIndex 에 저장된 값을 QJSManagedValue 에서 삭제합니다. 삭제에 성공하면 true
를 반환하고, 그렇지 않으면 false
을 반환합니다.
QJSEngine *QJSManagedValue::engine() const
QJSManagedValue 이 속한 QJSEngine 을 반환합니다. QJSManagedValue 이 기본 구성되거나 이동되지 않는 한 엔진은 항상 유효하다는 점에 유의하세요. 후자의 경우 nullptr이 반환됩니다.
bool QJSManagedValue::equals(const QJSManagedValue &other) const
이 QJSManagedValue 및 other 에서 자바스크립트 '==' 연산자를 호출하고 결과를 반환합니다.
strictlyEquals도 참조하세요 .
bool QJSManagedValue::hasOwnProperty(const QString &name) const
QJSManagedValue 에 name 속성이 있으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. 프로토타입 체인의 프로퍼티는 고려되지 않습니다.
bool QJSManagedValue::hasOwnProperty(quint32 arrayIndex) const
QJSManagedValue 에 배열 인덱스 arrayIndex 가 있으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. 프로토타입 체인의 속성은 고려되지 않습니다.
bool QJSManagedValue::hasProperty(const QString &name) const
QJSManagedValue 에 name 속성이 있으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. 프로토타입 체인의 프로퍼티가 고려됩니다.
bool QJSManagedValue::hasProperty(quint32 arrayIndex) const
true
QJSManagedValue 에 배열 인덱스가 있으면 을 반환하고, 그렇지 않으면 을 반환합니다. 프로토타입 체인의 속성이 고려됩니다. arrayIndex false
bool QJSManagedValue::isArray() const
이 값이 JavaScript 배열 객체를 나타내는 경우 true
, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isBoolean() const
QJSManagedValue 유형이 boolean
인 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isDate() const
이 값이 JavaScript Date 객체를 나타내는 경우 true
, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isError() const
이 값이 JavaScript 오류 객체를 나타내는 경우 true
, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isFunction() const
QJSManagedValue 유형이 function
인 경우 true
, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isInteger() const
QJSManagedValue 에 정수 값이 있으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. 숫자의 저장 형식은 숫자에 대해 수행되는 모든 연산 결과에 영향을 미치지 않지만 정수가 저장되면 많은 연산이 더 빨라집니다.
bool QJSManagedValue::isNull() const
QJSManagedValue 이 자바스크립트 null
값을 보유하면 true
, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isNumber() const
QJSManagedValue 유형이 number
인 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isObject() const
QJSManagedValue 유형이 object
인 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isQMetaObject() const
이 값이 자바스크립트 힙에서 관리되는 QMetaObject 포인터를 나타내는 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isQObject() const
이 값이 자바스크립트 힙에서 관리되는 QObject 포인터를 나타내는 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isRegularExpression() const
이 값이 JavaScript 정규식 객체를 나타내는 경우 true
, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isString() const
QJSManagedValue 유형이 string
인 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isSymbol() const
QJSManagedValue 유형이 symbol
인 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isUndefined() const
QJSManagedValue 유형이 undefined
인 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isUrl() const
이 값이 JavaScript Url 객체를 나타내는 경우 true
, 그렇지 않으면 false
을 반환합니다.
bool QJSManagedValue::isVariant() const
이 값이 자바스크립트 힙에서 관리되는 QVariant 을 나타내는 경우 true
을 반환하고, 그렇지 않은 경우 false
을 반환합니다.
QJSValue QJSManagedValue::property(const QString &name) const
이 QJSManagedValue 의 속성 name 을 반환합니다. 실제 객체에서 프로퍼티를 찾을 수 없는 경우 프로토타입 체인을 검색합니다.
setProperty()도 참조하세요 .
QJSValue QJSManagedValue::property(quint32 arrayIndex) const
이 QJSManagedValue 의 arrayIndex 에 저장된 프로퍼티를 반환합니다. 실제 객체에서 프로퍼티를 찾을 수 없는 경우 프로토타입 체인을 검색합니다.
QJSManagedValue QJSManagedValue::prototype() const
이 QJSManagedValue 에 대한 프로토타입을 반환합니다. 이 함수는 모든 값에서 작동합니다. 예를 들어 boolean
값에서 JavaScript boolean
프로토타입을 검색할 수 있습니다.
setPrototype()도 참조하세요 .
void QJSManagedValue::setProperty(const QString &name, const QJSValue &value)
이 QJSManagedValue 에서 name 속성을 value 로 설정합니다. 이 작업은 object
유형의 자바스크립트 값에서만 수행할 수 있습니다. 또한 value 은 프리미티브이거나 이 값과 동일한 엔진에 속해야 합니다.
property()도 참조하세요 .
void QJSManagedValue::setProperty(quint32 arrayIndex, const QJSValue &value)
value arrayIndex 에 을 저장합니다. 이 작업은 유형의 JavaScript 값에서만 수행할 수 있으며 값이 배열이 아닌 경우에는 권장되지 않습니다. 또한 은 프리미티브이거나 이 값과 동일한 엔진에 속해야 합니다. QJSManagedValue object
value
void QJSManagedValue::setPrototype(const QJSManagedValue &prototype)
이 QJSManagedValue 의 프로토타입을 prototype 으로 설정합니다. 전제 조건은 prototype 이 QJSManagedValue 과 동일한 QJSEngine 에 속하며 객체(null 포함)여야 한다는 것입니다. 또한 이 QJSManagedValue 역시 객체(널 제외)여야 하며 프로토타입 주기를 만들 수 없습니다.
prototype()도 참조하세요 .
bool QJSManagedValue::strictlyEquals(const QJSManagedValue &other) const
이 QJSManagedValue 및 other 에서 자바스크립트 '===' 연산자를 호출하고 결과를 반환합니다.
equals도 참조하세요 .
bool QJSManagedValue::toBoolean() const
관리되는 값을 부울로 변환합니다. 관리되는 값에 부울이 포함되어 있으면 해당 부울이 반환됩니다. 그렇지 않으면 자바스크립트 규칙에 따른 부울 강제가 수행됩니다.
QDateTime QJSManagedValue::toDateTime() const
QJSManagedValue 이 JavaScript Date 객체를 보유하고 있으면 이에 상응하는 QDateTime 을 반환합니다. 그렇지 않으면 유효하지 않은 것을 반환합니다.
int QJSManagedValue::toInteger() const
변조된 값을 정수로 변환합니다. 먼저 toNumber()의 규칙에 따라 값을 숫자로 변환한 다음, 자바스크립트 비트 시프트 연산자에 인수를 32비트 정수로 강제하기 위해 주어진 규칙에 따라 정수 범위로 클램프합니다.
내부적으로 값이 이미 정수로 저장되어 있을 수 있으며, 이 경우 빠른 경로가 사용됩니다.
참고: 관리되는 값을 숫자로 변환하면 예외가 발생할 수 있습니다. 특히 기호를 숫자로 강제로 변환할 수 없거나 사용자 정의 valueOf() 메서드가 throw할 수 있습니다. 이 경우 결과는 0이 되고 엔진은 변환 후 오류를 전달합니다.
참고: 숫자를 32비트 정수로 강제 변환하는 자바스크립트 규칙은 직관적이지 않습니다.
QJSValue QJSManagedValue::toJSValue() const
이 QJSManagedValue 을 새 QJSValue 으로 복사합니다. 이는 QJSManagedValue 에서 QJSValue 을 이동하는 것보다 덜 효율적이지만 QJSManagedValue 은 그대로 유지됩니다.
double QJSManagedValue::toNumber() const
관리되는 값을 숫자로 변환합니다. 관리되는 값에 숫자가 포함되어 있으면 해당 숫자가 반환됩니다. 그렇지 않으면 자바스크립트 규칙에 따른 숫자 강제 변환이 수행됩니다.
참고: 관리되는 값을 숫자로 변환하면 예외가 발생할 수 있습니다. 특히 기호를 숫자로 강제 변환할 수 없거나 사용자 정의 valueOf() 메서드가 예외를 발생시킬 수 있습니다. 이 경우 결과는 0이 되고 엔진은 변환 후 오류를 전달합니다.
QJSPrimitiveValue QJSManagedValue::toPrimitive() const
관리되는 값을 QJSPrimitiveValue 으로 변환합니다. 관리되는 값에 QJSPrimitiveValue 에서 지원하는 유형이 포함되어 있으면 값이 복사됩니다. 그렇지 않으면 값이 문자열로 변환되고 문자열이 QJSPrimitiveValue 에 저장됩니다.
참고: 관리되는 값을 문자열로 변환하면 예외가 발생할 수 있습니다. 특히 기호를 문자열로 강제로 변환할 수 없거나 사용자 정의 toString() 메서드가 throw될 수 있습니다. 이 경우 결과는 정의되지 않은 값이며 엔진은 변환 후 오류를 전달합니다.
const QMetaObject *QJSManagedValue::toQMetaObject() const
QJSManagedValue 이 QMetaObject 포인터를 보유하고 있으면 이를 반환합니다. 그렇지 않으면 nullptr을 반환합니다.
QObject *QJSManagedValue::toQObject() const
QJSManagedValue 이 QObject 포인터를 보유하고 있으면 이를 반환합니다. 그렇지 않으면 nullptr을 반환합니다.
QRegularExpression QJSManagedValue::toRegularExpression() const
QJSManagedValue 이 JavaScript 정규식 객체를 보유하고 있으면 이에 상응하는 QRegularExpression 을 반환합니다. 그렇지 않으면 유효하지 않은 것을 반환합니다.
QString QJSManagedValue::toString() const
관리되는 값을 문자열로 변환합니다. 관리되는 값에 문자열이 포함되어 있으면 해당 문자열이 반환됩니다. 그렇지 않으면 JavaScript 규칙에 따른 문자열 강제 변환이 수행됩니다.
참고: 관리되는 값을 문자열로 변환하면 예외가 발생할 수 있습니다. 특히 심볼을 문자열로 강제 변환할 수 없거나 사용자 정의 toString() 메서드가 throw될 수 있습니다. 이 경우 결과는 빈 문자열이 되고 엔진은 변환 후 오류를 전달합니다.
QUrl QJSManagedValue::toUrl() const
QJSManagedValue 이 JavaScript Url 객체를 보유하고 있으면 이에 상응하는 QUrl 을 반환합니다. 그렇지 않으면 유효하지 않은 것을 반환합니다.
QVariant QJSManagedValue::toVariant() const
이 QJSManagedValue 을 새 QVariant 으로 복사합니다. QJSManagedValue::isVariant ()가 false를 반환하면 유용한 QVariant 도 생성됩니다. QVariant 는 QJSManagedValue 에서 지원하는 모든 유형을 보유할 수 있습니다.
QJSManagedValue::Type QJSManagedValue::type() const
이 QJSManagedValue 의 자바스크립트 유형을 반환합니다.
QJSManagedValue &QJSManagedValue::operator=(QJSManagedValue &&other)
이동 - other 에서 QJSManagedValue 을 할당합니다. 이렇게 하면 other 은 정의되지 않고 어떤 엔진에도 속하지 않는 기본 구성 상태로 남게 됩니다.
참고: 이렇게 하면 QJSManagedValue 이 보유하고 있는 메모리 슬롯이 자바스크립트 힙에서 해제됩니다. QJSManagedValue 을 QJSEngine 이 속한 스레드가 있는 스레드가 아닌 다른 스레드에 이동 할당해서는 안 됩니다.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.