QJSValue Class
QJSValue 클래스는 Qt/JavaScript 데이터 유형을 담는 컨테이너 역할을 합니다. 더 보기...
| 헤더: | #include <QJSValue> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
공개 타입
| enum | ErrorType { GenericError, RangeError, ReferenceError, SyntaxError, TypeError, URIError } |
| enum | ObjectConversionBehavior { ConvertJSObjects, RetainJSObjects } |
| enum | SpecialValue { UndefinedValue, NullValue } |
공개 함수
| QJSValue(QJSValue::SpecialValue value = UndefinedValue) | |
| QJSValue(bool value) | |
| QJSValue(const QLatin1String &value) | |
| QJSValue(const QString &value) | |
| QJSValue(const char *value) | |
| QJSValue(double value) | |
| QJSValue(int value) | |
| QJSValue(uint value) | |
| QJSValue(const QJSValue &other) | |
| QJSValue(QJSValue &&other) | |
| ~QJSValue() | |
| QJSValue | call(const QJSValueList &args = QJSValueList()) const |
| QJSValue | callAsConstructor(const QJSValueList &args = QJSValueList()) const |
| QJSValue | callWithInstance(const QJSValue &instance, const QJSValueList &args = QJSValueList()) const |
| bool | deleteProperty(const QString &name) |
| bool | equals(const QJSValue &other) const |
| QJSValue::ErrorType | errorType() const |
| bool | hasOwnProperty(const QString &name) const |
| bool | hasProperty(const QString &name) const |
| bool | isArray() const |
| bool | isBool() const |
| bool | isCallable() const |
| bool | isDate() const |
| bool | isError() const |
| bool | isNull() const |
| bool | isNumber() const |
| bool | isObject() const |
| bool | isQMetaObject() const |
| bool | isQObject() const |
| bool | isRegExp() const |
| bool | isString() const |
| bool | isUndefined() const |
| bool | isUrl() const |
| QJSValue | property(const QString &name) const |
| QJSValue | property(quint32 arrayIndex) const |
| QJSValue | prototype() const |
| void | setProperty(const QString &name, const QJSValue &value) |
| void | setProperty(quint32 arrayIndex, const QJSValue &value) |
| void | setPrototype(const QJSValue &prototype) |
| bool | strictlyEquals(const QJSValue &other) const |
| bool | toBool() const |
| QDateTime | toDateTime() const |
| qint32 | toInt() const |
| double | toNumber() const |
| QJSPrimitiveValue | toPrimitive() const |
| const QMetaObject * | toQMetaObject() const |
| QObject * | toQObject() const |
| QString | toString() const |
| quint32 | toUInt() const |
| QVariant | toVariant(QJSValue::ObjectConversionBehavior behavior) const |
| QVariant | toVariant() const |
| QJSValue & | operator=(QJSValue &&other) |
| QJSValue & | operator=(const QJSValue &other) |
관련 비멤버
상세 설명
QJSValue는 ECMA-262 표준에 정의된 유형을 지원합니다. 기본 유형으로는 Undefined, Null, Boolean, Number, String이 있으며, Object 및 Array 유형도 지원합니다. 또한 QVariant 및 QObject 와 같은 Qt/C++ 유형에 대한 내장 지원이 제공됩니다.
객체 기반 유형(Date 및 RegExp 포함)의 경우, QJSEngine 에 있는 newT() 함수(예: QJSEngine::newObject())를 사용하여 원하는 유형의 QJSValue를 생성하십시오. 기본 유형의 경우, QJSValue 생성자의 오버로드 중 하나를 사용하십시오. QPoint 와 같은 등록된 가젯 유형을 비롯한 기타 유형의 경우, QJSEngine::toScriptValue 를 사용할 수 있습니다.
isT()라는 이름의 메서드(예: isBool(), isUndefined()))는 값이 특정 유형인지 확인하는 데 사용할 수 있습니다. toT()라는 이름의 메서드(예: toBool(), toString()))는 QJSValue를 다른 유형으로 변환하는 데 사용할 수 있습니다. 또한 제네릭 함수인 qjsvalue_cast()를 사용할 수도 있습니다.
객체 값은 0개 이상의 속성을 가지며, 이 속성들은 그 자체로 QJSValue입니다. setProperty()를 사용하여 객체의 속성을 설정하고, property()를 호출하여 속성의 값을 가져올 수 있습니다.
QJSEngine myEngine;
QJSValue myObject = myEngine.newObject();
QJSValue myOtherObject = myEngine.newObject();
myObject.setProperty("myChild", myOtherObject);
myObject.setProperty("name", "John Doe");스크립트 객체의 속성을 반복 처리하려면 QJSValueIterator 클래스를 사용하십시오.
객체 값에는 내부 prototype 속성이 있으며, 이 속성은 prototype() 및 setPrototype()를 통해 접근할 수 있습니다.
함수 객체( isCallable())가 true를 반환하는 객체)는 call()를 호출하여 실행할 수 있습니다. 생성자 함수는 callAsConstructor()를 호출하여 새로운 객체를 생성하는 데 사용할 수 있습니다.
equals() 또는 strictlyEquals()를 사용하여 QJSValue를 다른 QJSValue와 비교할 수 있습니다.
isObject()의 결과가 true인 QJSValue는 실제 객체에 대한 참조만 포함한다는 점에 유의하십시오. QJSValue를 복사하면 객체 자체가 아닌 객체 참조만 복사됩니다. 객체를 복제(즉, 객체의 속성을 다른 객체에 복사)하려면 스크립트 코드에서 for-in 문을 사용하거나 C++에서 QJSValueIterator 를 사용하면 됩니다.
배열 작업
QJSValue를 사용하여 배열을 생성하려면 QJSEngine::newArray()를 사용하십시오:
// Assumes that this class was declared in QML.
QJSValue jsArray = engine->newArray(3);배열의 개별 요소를 설정하려면 setProperty(quint32 arrayIndex, const QJSValue &value) 오버로드를 사용합니다. 예를 들어, 위의 배열을 정수로 채우려면 다음과 같이 합니다:
for (int i = 0; i < 3; ++i) {
jsArray.setProperty(i, QRandomGenerator::global().generate());
}배열의 길이를 확인하려면 "length" 속성에 접근합니다. 배열 요소에 접근하려면 property(quint32 arrayIndex) 오버로드를 사용합니다. 다음 코드는 위에서 생성한 배열을 다시 리스트로 읽어옵니다:
QList<int> integers;
const int length = jsArray.property("length").toInt();
for (int i = 0; i < length; ++i) {
integers.append(jsArray.property(i).toInt());
}JSON으로 변환
QJSValue를 JSON 유형으로 변환할 수 있습니다. 예를 들어, 배열로 변환하려면 QJSEngine::fromScriptValue()을 사용합니다:
const QJsonValue jsonValue = engine.fromScriptValue<QJsonValue>(jsValue);
const QJsonArray jsonArray = jsonValue.toArray();QJSEngine 및 QJSValueIterator도 참조하십시오 .
멤버 유형 문서
enum QJSValue::ErrorType
이 열거형은 JavaScript 언어 고유의 Error 객체 유형에 사용하십시오.
C++에서 언어 기능을 에뮬레이트할 때 특수한 예외 유형을 사용해야 하는 경우 이 열거형이 유용할 수 있습니다. 또한, 일반적인 자바스크립트 예외를 발생시키는 대신 특정 전형적인 상황을 더 명확하게 전달하는 데 도움이 될 수 있습니다. 예를 들어, 네트워킹 및 리소스 로케이터를 다루는 코드에서는 URIError 유형을 사용하여 형식이 잘못된 로케이터와 관련된 오류를 전파하는 것이 유용할 수 있습니다.
| 상수 | 값 | 설명 |
|---|---|---|
QJSValue::GenericError | 1 | 특정 하위 유형이 아닌 일반적인 Error 객체입니다. |
QJSValue::RangeError | 3 | 값이 예상된 집합이나 범위에 일치하지 않았습니다. |
QJSValue::ReferenceError | 4 | 존재하지 않는 변수가 참조되었습니다. |
QJSValue::SyntaxError | 5 | 언어의 구문에 부합하지 않는 유효하지 않은 토큰 또는 토큰 시퀀스가 발견되었습니다. |
QJSValue::TypeError | 6 | 피연산자나 인자가 예상된 유형과 호환되지 않습니다. |
QJSValue::URIError | 7 | URI 처리 함수가 잘못 사용되었거나, 제공된 URI의 형식이 올바르지 않습니다. |
enum QJSValue::ObjectConversionBehavior
이 열거형은 네이티브 Qt 유형에 해당하는 것이 없는 JavaScript 객체 및 심볼을 QVariant 로 변환할 때 어떻게 처리해야 하는지 지정하는 데 사용됩니다.
| 상수 | 상수값 | 상수값 |
|---|---|---|
QJSValue::ConvertJSObjects | 0 | 최선을 다해 변환을 시도하지만, 일부 정보가 손실될 수 있습니다. 심볼은 ` QString`로 변환됩니다. |
QJSValue::RetainJSObjects | 1 | 값은 QVariant 로 래핑된 QJSValue 형태로 유지됩니다. |
enum QJSValue::SpecialValue
이 열거형은 단일 값을 갖는 유형을 지정하는 데 사용됩니다.
| 상수 | 값 | 설명 |
|---|---|---|
QJSValue::UndefinedValue | 1 | 정의되지 않은 값입니다. |
QJSValue::NullValue | 0 | null 값입니다. |
멤버 함수 문서
QJSValue::QJSValue(QJSValue::SpecialValue value = UndefinedValue)
특정 value 를 사용하여 새로운 QJSValue 객체를 생성합니다.
QJSValue::QJSValue(bool value)
value 라는 부울 값을 가진 새로운 QJSValue 객체를 생성합니다.
QJSValue::QJSValue(const QLatin1String &value)
value 라는 문자열을 사용하여 새로운 QJSValue 객체를 생성합니다.
QJSValue::QJSValue(const QString &value)
value 라는 문자열을 사용하여 새로운 QJSValue 객체를 생성합니다.
QJSValue::QJSValue(const char *value)
value 라는 문자열을 사용하여 새로운 QJSValue 객체를 생성합니다.
QJSValue::QJSValue(double value)
value 인 숫자를 가진 새로운 QJSValue 객체를 생성합니다.
QJSValue::QJSValue(int value)
value 라는 숫자를 가진 새로운 QJSValue 객체를 생성합니다.
QJSValue::QJSValue(uint value)
value 인 숫자를 사용하여 새로운 QJSValue 객체를 생성합니다.
QJSValue::QJSValue(const QJSValue &other)
other 의 복사본인 새로운 QJSValue를 생성합니다.
other 가 객체인 경우(즉, ` isObject()`가 true를 반환하는 경우), 새로운 스크립트 값에는 기본 객체에 대한 참조만 복사되며(즉, 객체 자체는 복사되지 않습니다) 이 점에 유의하십시오.
QJSValue::QJSValue(QJSValue &&other)
이동 생성자. other 에서 이 QJSValue 객체로 값을 이동합니다.
[noexcept] QJSValue::~QJSValue()
QJSValue 를 삭제합니다.
QJSValue QJSValue::call(const QJSValueList &args = QJSValueList()) const
QJSValue 를 함수로 호출하며, args 를 함수의 인자로 전달하고, globalObject()를 “this” 객체로 사용합니다. 함수에서 반환된 값을 반환합니다.
이 ` QJSValue `가 호출 불가능한 경우, `call()`은 아무 작업도 수행하지 않고 `undefined`인 ` QJSValue`를 반환합니다.
call()을 호출하면 스크립트 엔진에서 예외가 발생할 수 있습니다. 이 경우 call()은 던져진 값(일반적으로 Error 객체)을 반환합니다. 반환 값에 대해 isError()을 호출하여 예외가 발생했는지 확인할 수 있습니다.
isCallable(), callWithInstance(), callAsConstructor()도 참조하십시오 .
QJSValue QJSValue::callAsConstructor(const QJSValueList &args = QJSValueList()) const
새로운 ` Object `를 생성하고, 생성된 객체를 `this` 객체로 사용하여 ` args `를 인수로 전달하며, 이 ` QJSValue `를 생성자로 호출합니다. 생성자 호출의 반환 값이 객체라면 해당 객체가 반환되고, 그렇지 않으면 기본 생성된 객체가 반환됩니다.
이 ` QJSValue `가 함수가 아닌 경우, `callAsConstructor()`는 아무 작업도 수행하지 않고 `undefined`인 ` QJSValue`를 반환합니다.
이 함수를 호출하면 스크립트 엔진에서 예외가 발생할 수 있으며, 이 경우 던져진 값(일반적으로 Error 객체)이 반환됩니다. 반환 값에 대해 isError()을 호출하여 예외가 발생했는지 확인할 수 있습니다.
call() 및 QJSEngine::newObject()도 참조하십시오 .
QJSValue QJSValue::callWithInstance(const QJSValue &instance, const QJSValueList &args = QJSValueList()) const
QJSValue 를 함수로 호출하며, 함수 호출 시 instance 을 `this' 객체로 사용하고, args 을 함수의 인자로 전달합니다. 함수에서 반환된 값을 반환합니다.
이 ` QJSValue `가 함수가 아닌 경우, ` call()`는 아무 작업도 수행하지 않고 `undefined`인 ` QJSValue`를 반환합니다.
instance 가 객체가 아닌 경우, 전역 객체( QJSEngine::globalObject() 참조)가 `this' 객체로 사용된다는 점에 유의하십시오.
call()를 호출하면 스크립트 엔진에서 예외가 발생할 수 있습니다. 이 경우 call()는 던져진 값(일반적으로 Error 객체)을 반환합니다. 반환된 값에 대해 isError()를 호출하여 예외가 발생했는지 확인할 수 있습니다.
call()도 참조하십시오 .
bool QJSValue::deleteProperty(const QString &name)
name 로 지정된 이 객체의 속성을 삭제하려고 시도합니다. 속성이 삭제된 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
이 함수의 동작은 JavaScript의 delete 연산자와 일치합니다. 특히:
- 구성할 수 없는 속성은 삭제할 수 없습니다.
- 이 객체에 지정된 name 의 속성이 없더라도 이 함수는 true를 반환합니다(즉, 존재하지 않는 속성은 "당연히 삭제 가능"합니다).
- 이 객체에 주어진 name 의 자체 속성이 없더라도, prototype() 체인에 속한 객체에 해당 속성이 있다면, 프로토타입 객체의 속성은 삭제되지 않으며 이 함수는 true를 반환합니다.
setProperty() 및 hasOwnProperty()도 참조하십시오 .
bool QJSValue::equals(const QJSValue &other) const
이 QJSValue 가 other 와 같으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 비교는 ECMA-262 섹션 11.9.3, “추상적 등가 비교 알고리즘(The Abstract Equality Comparison Algorithm)”에 설명된 동작을 따릅니다.
이 함수는 이 QJSValue 의 유형이 other 값의 유형과 다르더라도 true를 반환할 수 있습니다. 즉, 비교는 엄격하지 않습니다. 예를 들어, 숫자 9와 문자열 "9"를 비교하면 true를 반환하고, 정의되지 않은 값과 null 값을 비교하면 true를 반환하며, 기본 값이 6인 Number 객체와 기본 값이 "6"인 String 객체를 비교하면 true를 반환하고, 숫자 1과 부울 값 true 을 비교하면 true를 반환합니다. 이러한 암시적 값 변환 없이 비교를 수행하려면 ` strictlyEquals()`를 사용하십시오.
QJSValue 이나 other 값이 객체인 경우, 이 함수를 호출하면 스크립트 엔진에 부수적인 영향이 발생한다는 점에 유의하십시오. 엔진은 객체를 기본형 값으로 변환하기 위해 객체의 valueOf() 함수(그리고 경우에 따라 toString())를 호출하기 때문입니다(이로 인해 스크립트 예외가 발생하지 않을 수도 있습니다).
strictlyEquals()도 참조하십시오 .
QJSValue::ErrorType QJSValue::errorType() const
이 QJSValue 가 Error 객체인 경우, 해당 객체가 나타내는 오류 유형을 반환합니다. 그렇지 않은 경우, 다음을 반환합니다. NoError."
isError() 및 QJSEngine - Script Exceptions도 참조하십시오 .
bool QJSValue::hasOwnProperty(const QString &name) const
이 객체에 주어진 ` name`의 자체 속성(프로토타입에서 상속받은 것이 아닌)이 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
property() 및 hasProperty()도 참조하십시오 .
bool QJSValue::hasProperty(const QString &name) const
이 객체에 주어진 name 의 속성이 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
property() 및 hasOwnProperty()도 참조하십시오 .
bool QJSValue::isArray() const
이 ` QJSValue `가 Array 클래스의 객체이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
참고: 이 메서드는 자바스크립트의 Array.isArray() 와 동일합니다. 이 메서드를 사용하여 자바스크립트 배열을 식별할 수 있지만, 자바스크립트 배열이 아닌 배열과 유사한 객체의 경우에도 false 를 반환합니다. 여기에는 값 유형 또는 객체 유형의 QML 목록 객체, 자바스크립트 타입화된 배열, 자바스크립트 ArrayBuffer 객체, 그리고 사용자가 직접 생성한 모든 사용자 정의 배열과 유사한 객체가 포함됩니다. 하지만 이들 모두는 자바스크립트 배열처럼 동작합니다. 일반적으로 동일한 메서드를 노출하며, 인덱스 연산자를 사용할 수 있습니다. 따라서 이 메서드를 사용하여 객체가 배열처럼 사용될 수 있는지 판단하는 것은 권장되지 않습니다.
QJSEngine::newArray()도 참조하십시오 .
bool QJSValue::isBool() const
이 QJSValue 객체가 기본형 Boolean인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
toBool()도 참조하십시오 .
bool QJSValue::isCallable() const
이 QJSValue 가 함수인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
call()도 참조하십시오 .
bool QJSValue::isDate() const
이 ` QJSValue `가 `Date` 클래스의 객체일 경우 `true`를 반환하고, 그렇지 않으면 `false`를 반환합니다.
bool QJSValue::isError() const
이 QJSValue 가 Error 클래스의 객체이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
errorType() 및 QJSEngine - Script Exceptions도 참조하십시오 .
bool QJSValue::isNull() const
이 ` QJSValue `가 기본 유형 `Null`인 경우 `true`를 반환하고, 그렇지 않은 경우 `false`를 반환합니다.
bool QJSValue::isNumber() const
이 QJSValue 객체가 기본형 Number인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
toNumber()도 참조하십시오 .
bool QJSValue::isObject() const
이 QJSValue 가 Object 유형인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
함수 값, 변수형 값 및 QObject 값은 객체이므로, 이 함수는 이러한 값에 대해 true를 반환합니다.
QJSEngine::newObject()도 참조하십시오 .
bool QJSValue::isQMetaObject() const
이 QJSValue 가 QMetaObject 인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
toQMetaObject() 및 QJSEngine::newQMetaObject()도 참조하십시오 .
bool QJSValue::isQObject() const
이 QJSValue 가 QObject 인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
참고: 이 함수는 이 QJSValue 가 감싸고 있는 QObject 가 삭제된 경우에도 true를 반환합니다.
toQObject() 및 QJSEngine::newQObject()도 참조하십시오 .
bool QJSValue::isRegExp() const
이 ` QJSValue `가 RegExp 클래스의 객체인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
bool QJSValue::isString() const
이 QJSValue 가 기본형 String인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
toString()도 참조하십시오 .
bool QJSValue::isUndefined() const
이 QJSValue 가 기본형 `Undefined`이거나, 관리되는 값이 (엔진을 삭제함으로써) 지워진 경우 true를 반환합니다. 그렇지 않은 경우 false를 반환합니다.
bool QJSValue::isUrl() const
이 ` QJSValue `가 URL JavaScript 클래스의 객체인 경우 `true`를 반환하고, 그렇지 않은 경우 `false`를 반환합니다.
참고: ` QUrl`를 포함하는 ` QJSValue `의경우 , 이 함수는 `false`를 반환합니다. 그러나 ` toVariant().value<QUrl>() `는 두 경우 모두에서 정상적으로 작동합니다.
QJSValue QJSValue::property(const QString &name) const
주어진 name 를 사용하여 이 QJSValue 의 속성 값을 반환합니다. 해당 속성이 존재하지 않으면 undefined QJSValue 가 반환됩니다.
속성이 getter 함수를 사용하여 구현된 경우(즉, PropertyGetter 플래그가 설정된 경우), property()를 호출하면 getter 함수가 호출되므로 스크립트 엔진에 부수적 효과가 발생합니다(이로 인해 처리되지 않은 스크립트 예외가 발생할 수 있음). 예외가 발생한 경우, property()는 스로워진 값(일반적으로 Error 객체)을 반환합니다.
배열 요소에 액세스하려면 대신 setProperty(quint32 arrayIndex, const QJSValue &value) 오버로드를 사용하십시오.
setProperty(), hasProperty(), QJSValueIterator도 참조하십시오 .
QJSValue QJSValue::property(quint32 arrayIndex) const
지정된 배열 인덱스( arrayIndex)에 해당하는 속성을 반환합니다.
배열의 요소에 접근하는 방법에는 두 가지가 있습니다. 첫 번째는 배열 인덱스를 속성 이름으로 사용하는 것입니다:
qDebug() << jsValueArray.property(QLatin1String("4")).toString();두 번째 방법은 인덱스를 매개변수로 받는 오버로드를 사용하는 것입니다:
qDebug() << jsValueArray.property(4).toString();이 두 가지 방법 모두 동일한 결과를 얻지만, 후자의 경우:
- 사용하기 더 간편합니다(정수를 직접 사용할 수 있음)
- 더 빠릅니다(정수 변환이 필요 없음)
이 ` QJSValue `가 `Array` 객체가 아닌 경우, 이 함수는 ` arrayIndex`의 문자열 표현을 사용하여 `property()`가 호출된 것처럼 동작합니다.
이 함수는 오버로드된 함수입니다.
QJSValue QJSValue::prototype() const
이 QJSValue 가 객체인 경우, 해당 객체의 내부 프로토타입(__proto__ 속성)을 반환하고, 그렇지 않은 경우 undefined QJSValue 를 반환합니다.
setPrototype() 및 isObject()도 참조하십시오 .
void QJSValue::setProperty(const QString &name, const QJSValue &value)
이 QJSValue 객체의 속성 값을, 지정된 name 을 사용하여 지정된 value 로 설정합니다.
이 QJSValue 가 객체가 아닌 경우, 이 함수는 아무 작업도 수행하지 않습니다.
이 QJSValue 에 name 라는 이름의 속성이 아직 없는 경우, 새로운 속성이 생성됩니다.
배열 요소를 수정하려면 대신 setProperty(quint32 arrayIndex, const QJSValue &value) 오버로드를 사용하십시오.
property() 및 deleteProperty()도 참조하십시오 .
void QJSValue::setProperty(quint32 arrayIndex, const QJSValue &value)
지정된 인덱스( arrayIndex )에 해당하는 속성을 지정된 값( value)으로 설정합니다.
배열의 요소를 수정하는 방법에는 두 가지가 있습니다. 첫 번째는 배열 인덱스를 속성 이름으로 사용하는 것입니다:
jsValueArray.setProperty(QLatin1String("4"), value);두 번째 방법은 인덱스를 매개변수로 받는 오버로드를 사용하는 것입니다:
jsValueArray.setProperty(4, value);이 두 가지 방법 모두 동일한 결과를 얻지만, 후자의 경우:
- 사용하기 더 간편합니다(정수를 직접 사용할 수 있음)
- 더 빠릅니다(정수로의 변환이 없음)
이 QJSValue 가 Array 객체가 아닌 경우, 이 함수는 arrayIndex 의 문자열 표현을 인수로 받아 setProperty()가 호출된 것처럼 동작합니다.
이 함수는 오버로드된 함수입니다.
property(quint32 arrayIndex) 및 Working With Arrays도 참조하십시오 .
void QJSValue::setPrototype(const QJSValue &prototype)
이 QJSValue 가 객체인 경우, 이 객체의 내부 프로토타입(__proto__ 속성)을 prototype 로 설정합니다. QJSValue 가 null인 경우 프로토타입을 null로 설정하고, 그렇지 않으면 아무 작업도 수행하지 않습니다.
내부 프로토타입을 "prototype"이라는 이름의 공개 속성과 혼동해서는 안 됩니다. 공개 프로토타입은 일반적으로 생성자 역할을 하는 함수에만 설정됩니다.
prototype() 및 isObject()도 참조하십시오 .
bool QJSValue::strictlyEquals(const QJSValue &other) const
이 QJSValue 가 other 와 엄격 비교(형 변환 없음)를 통해 동일할 경우 true를 반환하고, 그렇지 않으면 false를 반환합니다. 비교는 ECMA-262 섹션 11.9.6, “엄격한 등가 비교 알고리즘”에 설명된 동작을 따릅니다.
이 QJSValue 의 형식이 other 값의 형식과 다른 경우, 이 함수는 false를 반환합니다. 형식이 동일한 경우, 결과는 다음 표에 표시된 대로 해당 형식에 따라 달라집니다:
| 형식 | 결과 |
|---|---|
| 정의되지 않음 | true |
| Null | true |
| 부울 | 값이 둘 다 참이거나 둘 다 거짓인 경우 true, 그 외의 경우 false |
| 숫자 | 값 중 하나라도 NaN(Not-a-Number)인 경우 false; 값이 같으면 true, 그렇지 않으면 false |
| 문자열 | 두 값이 정확히 동일한 문자열인 경우 true, 그렇지 않은 경우 false |
| 객체 | 두 값이 모두 동일한 객체를 가리키면 true, 그렇지 않으면 false |
equals()도 참조하십시오 .
bool QJSValue::toBool() const
ECMA-262 9.2절 “ToBoolean”에 설명된 변환 규칙을 사용하여, 이 ` QJSValue`의 부울 값을 반환합니다.
이 QJSValue 가 객체인 경우, 이 함수를 호출하면 스크립트 엔진에 부수 효과가 발생한다는 점에 유의하십시오. 엔진은 객체를 기본형 값으로 변환하기 위해 객체의 valueOf() 함수(그리고 경우에 따라 toString())를 호출하기 때문입니다(이로 인해 처리되지 않은 스크립트 예외가 발생할 수 있음).
isBool()도 참조하십시오 .
QDateTime QJSValue::toDateTime() const
이 값을 현지 시간 기준으로 ` QDateTime ` 형식으로 변환하여 반환합니다. 이 ` QJSValue `가 날짜가 아니거나, 날짜 값이 NaN(Not-a-Number)인 경우, 유효하지 않은 ` QDateTime `가 반환됩니다.
isDate()도 참조하십시오 .
qint32 QJSValue::toInt() const
ECMA-262 섹션 9.5 “ToInt32”에 설명된 변환 규칙을 사용하여, 이 ` QJSValue`의 부호 있는 32비트 정수 값을 반환합니다.
이 ` QJSValue `가 객체인 경우, 이 함수를 호출하면 스크립트 엔진에 부수 효과가 발생합니다. 엔진이 객체를 기본형 값으로 변환하기 위해 객체의 `valueOf()` 함수(그리고 경우에 따라 ` toString()` 함수)를 호출하기 때문입니다(이로 인해 처리되지 않은 스크립트 예외가 발생할 수 있음).
toNumber() 및 toUInt()도 참조하십시오 .
double QJSValue::toNumber() const
ECMA-262 9.3절 “ToNumber”에 정의된 대로, 이 ` QJSValue`의 숫자 값을 반환합니다.
이 ` QJSValue `가 객체인 경우, 이 함수를 호출하면 스크립트 엔진에 부수 효과가 발생한다는 점에 유의하십시오. 엔진은 객체를 기본형 값으로 변환하기 위해 객체의 `valueOf()` 함수(그리고 경우에 따라 ` toString()` 함수)를 호출하게 되며, 이로 인해 처리되지 않은 스크립트 예외가 발생할 수도 있습니다.
isNumber(), toInt() 및 toUInt()도 참조하십시오 .
QJSPrimitiveValue QJSValue::toPrimitive() const
값을 ` QJSPrimitiveValue`로 변환합니다. 값이 ` QJSPrimitiveValue`에서 지원하는 유형인 경우, 해당 값이 복사됩니다. 그렇지 않은 경우 값은 문자열로 변환되고, 해당 문자열은 ` QJSPrimitiveValue`에 저장됩니다.
참고: 관리되는 값을 문자열로변환할 때 예외가 발생할 수 있습니다. 특히, 심볼은 문자열로 강제 변환할 수 없으며, 사용자 정의 toString() 메서드에서 예외가 발생할 수도 있습니다. 이 경우 결과는 정의되지 않은 값이 되며, 엔진은 변환 후 오류를 처리합니다.
const QMetaObject *QJSValue::toQMetaObject() const
* 이 QJSValue 가 QMetaObject 인 경우, QJSValue 가 나타내는 QMetaObject 포인터 *를 반환하고, 그렇지 않은 경우 nullptr 를 반환합니다. * *
isQMetaObject()도 참조하십시오 .
QObject *QJSValue::toQObject() const
이 QJSValue 가 QObject 인 경우, QJSValue 가 나타내는 QObject 포인터를 반환하고, 그렇지 않은 경우 nullptr 를 반환합니다.
이 QJSValue 가 감싸고 있는 QObject 가 삭제된 경우, 이 함수는 nullptr 을 반환합니다(즉, isQObject()이 true를 반환하더라도 toQObject()가 nullptr 을 반환할 가능성이 있습니다).
isQObject()도 참조하십시오 .
QString QJSValue::toString() const
ECMA-262 9.8절 “ToString”에 정의된 대로, 이 ` QJSValue`의 문자열 값을 반환합니다.
이 QJSValue 가 객체인 경우, 이 함수를 호출하면 스크립트 엔진에 부수 효과가 발생한다는 점에 유의하십시오. 엔진이 객체를 기본형 값으로 변환하기 위해 객체의 toString() 함수(그리고 경우에 따라 valueOf() 함수)를 호출하기 때문입니다(이로 인해 처리되지 않은 스크립트 예외가 발생할 수 있음).
isString()도 참조하십시오 .
quint32 QJSValue::toUInt() const
ECMA-262 9.6절 “ToUint32”에 설명된 변환 규칙을 사용하여, 이 ` QJSValue`의 부호 없는 32비트 정수 값을 반환합니다.
이 ` QJSValue `가 객체인 경우, 이 함수를 호출하면 스크립트 엔진에 부수 효과가 발생합니다. 엔진이 객체를 기본형 값으로 변환하기 위해 객체의 `valueOf()` 함수(그리고 경우에 따라 ` toString()` 함수)를 호출하기 때문입니다(이로 인해 처리되지 않은 스크립트 예외가 발생할 수 있음).
toNumber() 및 toInt()도 참조하십시오 .
QVariant QJSValue::toVariant(QJSValue::ObjectConversionBehavior behavior) const
이 ` QJSValue`의 ` QVariant ` 값을 반환합니다. 단, 해당 값을 ` QVariant`로 변환할 수 있는 경우에만 해당하며, 그렇지 않은 경우 유효하지 않은 ` QVariant`를 반환합니다. 일부 JavaScript 유형 및 객체는 Qt에서 네이티브 표현식을 가지고 있습니다. 이러한 표현식은 해당 네이티브 표현식으로 변환됩니다. 예를 들어:
| 입력 유형 | 결과 |
|---|---|
| 정의되지 않음 | 유효하지 않은 QVariant. |
| Null | null 포인터(QMetaType::Nullptr)를 포함하는 QVariant 입니다. |
| 부울 | 부울 값을 포함하는 ` QVariant `입니다. |
| 숫자 | 숫자 값을 포함하는 QVariant 입니다. |
| String | 문자열의 값을 포함하는 QVariant 입니다. |
| QVariant Object | 결과는 객체의 QVariant 값입니다(변환 없음). |
| QVariantMap Object | 객체에 저장된 ` QVariantMap `를 포함하는 ` QVariant `입니다(변환 없음). |
| QVariantHash Object | 객체에 저장된 ` QVariantHash `를 포함하는 ` QVariant `입니다(변환 없음). |
| QObject 객체 | QObject 에 대한 포인터를 포함하는 QVariant 입니다. |
| 날짜 객체 | 날짜 값(toDateTime())을 포함하는 QVariant 입니다. |
| RegularExpression 객체 | 정규 표현식 값을 포함하는 ` QVariant `입니다. |
다른 유형의 경우 behavior 매개변수가 관련됩니다. ConvertJSObjects 가 지정되면, 최선의 노력을 기울이되 손실이 발생할 수 있는 변환이 시도됩니다. 일반 JavaScript 객체는 QVariantMap 로 변환됩니다. JavaScript 배열은 QVariantList 로 변환됩니다. 각 속성 또는 요소는 재귀적으로 QVariant 로 변환되며, 순환 참조는 추적되지 않습니다. JavaScript 함수 객체는 제거됩니다. RetainJSObjects 가 지정된 경우, QJSValue 는 QVariant::fromValue()를 통해 QVariant 로 래핑됩니다. 결과 변환은 손실 없이 이루어지지만, 객체의 내부 구조에는 즉시 접근할 수 없습니다.
isVariant()도 참조하십시오 .
QVariant QJSValue::toVariant() const
toVariant(ConvertJSObjects)를 반환합니다.
이 함수는 오버로드된 함수입니다.
isVariant()도 참조하십시오 .
QJSValue &QJSValue::operator=(QJSValue &&other)
other 를 이 QJSValue 객체에 할당합니다.
QJSValue &QJSValue::operator=(const QJSValue &other)
이 ` QJSValue`에 ` other ` 값을 할당합니다.
other 가 객체인 경우(isObject()가 true를 반환하는 경우), 기본 객체에 대한 참조만 할당되며 객체 자체는 복사되지 않습니다.
© 2026 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.