Spec-Zone.ru › Qt

Класс QJSManagedValue

QJSManagedValue представляет значение на куче JavaScript, принадлежащее QJSEngine. Подробнее...

Заголовок: #include <QJSManagedValue>
CMake: find_package(Qt6 COMPONENTS Qml REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml
С момента: Qt 6.1
  • Список всех членов, включая унаследованные

Открытые типы

перечисление Тип { Неопределённое, Логическое, Числовое, Строковое, Объект, …, Функция }

Открытые функции

QJSManagedValue(QJSManagedValue &&other)
QJSManagedValue(const QString &string, QJSEngine *engine)
QJSManagedValue(const QVariant &variant, QJSEngine *engine)
QJSManagedValue(const QJSPrimitiveValue &value, QJSEngine *engine)
QJSManagedValue(QJSValue value, QJSEngine *engine)
QJSManagedValue()
QJSManagedValue & operator=(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 позволяет взаимодействовать со значениями JavaScript практически всеми способами, которые доступны при взаимодействии с ними из JavaScript. Вы можете получать и устанавливать свойства и прототипы, а также обращаться к массивам. Дополнительно, вы можете преобразовать значение в эквиваленты Qt-объектов JavaScript. Например, объект Url может быть преобразован в QUrl.

QJSManagedValue всегда связан с конкретным QJSEngine. Вы не можете использовать его независимо. Это означает, что QJSManagedValue из одного движка не может быть свойством или прототипом QJSManagedValue из другого движка.

В отличие от QJSValue, почти все значения, хранящиеся в QJSManagedValue, находятся в куче JavaScript. Нет встроенного или необработанного хранения. Поэтому вы можете получить прототип примитивного значения, и вы можете получить свойство length строки.

Только значения QJSManagedValues, созданные по умолчанию или перемещенные, не содержат значение в куче JavaScript. Они представляют undefined, у которого нет свойств или прототипов.

Также в отличие от QJSValue, QJSManagedValue не перехватывает исключения JavaScript. Если операция над QJSManagedValue вызывает ошибку, она обычно возвращает значение undefined и QJSEngine::hasError() вернет true впоследствии. Вы можете перехватить исключение, используя QJSEngine::catchError(), или передать его по стеку по своему усмотрению.

Примечание: Поскольку ссылка на значение в куче JavaScript должна быть освобождена при уничтожении, вы не можете переместить QJSManagedValue в другой поток. Уничтожение будет происходить в новом потоке, что создаст гонку с сборщиком мусора в исходном потоке. Это также означает, что вы не можете хранить QJSManagedValue дольше срока жизни его движка.

Рекомендуемый способ работы с QJSManagedValue — создание его на стеке, возможно, путем перемещения QJSValue и добавления движка, затем выполнение необходимых операций, и, наконец, перемещение его обратно в QJSValue для хранения. Перемещение между QJSManagedValue и QJSValue быстро.

Документация по типам членов

перечисление QJSManagedValue::Type

Это перечисление представляет собой типы встроенных JavaScript, как указано в ECMA-262.

Константа Значение Описание
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 не является типом сам по себе, а скорее особым видом объекта. Вы можете запросить у QJSManagedValue это условие, используя метод isNull(). Кроме того, в JavaScript нет целочисленного типа, но он знает специальное обращение с числами в подготовке к операциям только с целыми числами. Вы можете запросить QJSManagedValue, чтобы узнать, содержит ли он результат такого преобразования, используя метод isInteger().

Документация по функциям-членам

QJSManagedValue::QJSManagedValue(QJSManagedValue &&other)

Перемещает конструктор QJSManagedValue из other. Это оставляет other в состоянии, созданном по умолчанию, где он представляет неопределенное значение и не принадлежит ни одному движку.

QJSManagedValue::QJSManagedValue(const QString &string, QJSEngine *engine)

Создает QJSManagedValue из string, используя кучу engine.

QJSManagedValue::QJSManagedValue(const QVariant &variant, QJSEngine *engine)

Создает QJSManagedValue из variant, используя кучу engine.

QJSManagedValue::QJSManagedValue(const QJSPrimitiveValue &value, QJSEngine *engine)

Создаёт QJSManagedValue из value, используя кучу engine.

QJSManagedValue::QJSManagedValue(QJSValue value, QJSEngine *engine)

Создает QJSManagedValue из value, используя кучу engine. Если value само управляемое и движок, к которому оно принадлежит, не engine, результатом является значение undefined, и генерируется предупреждение.

QJSManagedValue::QJSManagedValue()

Создает QJSManagedValue, представляющий значение JavaScript undefined. Это единственное значение, не хранящееся в куче JavaScript. Вызов engine() на QJSManagedValue, созданном по умолчанию, вернет nullptr.

QJSManagedValue &QJSManagedValue::operator=(QJSManagedValue &&other)

Перемещает присваивание QJSManagedValue из other. Это оставляет other в состоянии, созданном по умолчанию, где он представляет неопределенное значение и не принадлежит ни одному движку.

Примечание: Это освобождает слот памяти, который содержит этот QJSManagedValue в куче JavaScript. Вы не должны перемещать присваивание QJSManagedValue в другом потоке, чем тот, в котором находится QJSEngine, к которому он принадлежит.

QJSManagedValue::~QJSManagedValue()

Уничтожает QJSManagedValue.

Примечание: Это освобождает слот памяти, который он содержит в куче JavaScript. Вы не должны уничтожать QJSManagedValue из другого потока, чем тот, в котором находится QJSEngine, к которому он принадлежит.

QJSValue QJSManagedValue::call(const QJSValueList &arguments = {}) const

Если этот QJSManagedValue представляет собой JavaScript FunctionObject, вызывает его с заданными arguments и возвращает результат. В противном случае возвращает значение JavaScript undefined.

arguments должны быть либо примитивными значениями, либо принадлежать тому же QJSEngine, что и этот QJSManagedValue. В противном случае вызов не выполняется, и возвращается значение JavaScript undefined.

QJSValue QJSManagedValue::callAsConstructor(const QJSValueList &arguments = {}) const

Если этот QJSManagedValue представляет собой JavaScript FunctionObject, вызывает его как конструктор с заданными arguments и возвращает результат. В противном случае возвращает значение JavaScript undefined.

arguments должны быть либо примитивными значениями, либо принадлежать тому же QJSEngine, что и этот QJSManagedValue. В противном случае вызов не выполняется, и возвращается значение JavaScript undefined.

QJSValue QJSManagedValue::callWithInstance(const QJSValue &instance, const QJSValueList &arguments = {}) const

Если этот QJSManagedValue представляет собой JavaScript FunctionObject, вызывает его на instance с заданными arguments и возвращает результат. В противном случае возвращает значение JavaScript undefined.

arguments и instance должны быть либо примитивными значениями, либо принадлежать тому же QJSEngine, что и этот QJSManagedValue. В противном случае вызов не выполняется, и возвращается значение JavaScript undefined.

bool QJSManagedValue::deleteProperty(const QString &name)

Удаляет свойство name из этого QJSManagedValue. Возвращает true , если удаление успешно, или false в противном случае.

bool QJSManagedValue::deleteProperty(quint32 arrayIndex)

Удаляет значение, хранящееся в arrayIndex, из этого QJSManagedValue. Возвращает true , если удаление успешно, или false в противном случае.

QJSEngine *QJSManagedValue::engine() const

Возвращает QJSEngine, к которому принадлежит этот QJSManagedValue. Обратите внимание, что движок всегда действителен, если только QJSManagedValue не создан по умолчанию или не перемещен. В последнем случае возвращается nullptr.

bool QJSManagedValue::equals(const QJSManagedValue &other) const

Вызывает оператор JavaScript '==' для этого QJSManagedValue и other и возвращает результат.

См. также strictlyEquals.

bool QJSManagedValue::hasOwnProperty(const QString &name) const

Возвращает true , если у этого QJSManagedValue есть свойство name, в противном случае возвращает false. Свойства цепочки прототипов не учитываются.

bool QJSManagedValue::hasOwnProperty(quint32 arrayIndex) const

Возвращает true если у этого QJSManagedValue есть индекс массива arrayIndex, в противном случае возвращает false. Свойства цепочки прототипов не учитываются.

bool QJSManagedValue::hasProperty(const QString &name) const

Возвращает true если у этого QJSManagedValue есть свойство name, в противном случае возвращает false. Свойства цепочки прототипов учитываются.

bool QJSManagedValue::hasProperty(quint32 arrayIndex) const

Возвращает true если у этого QJSManagedValue есть индекс массива arrayIndex, в противном случае возвращает false. Свойства цепочки прототипов учитываются.

bool QJSManagedValue::isArray() const

Возвращает true если это значение представляет собой объект JavaScript Array, или false в противном случае.

bool QJSManagedValue::isBoolean() const

Возвращает true если тип этого QJSManagedValue является boolean, или false в противном случае.

bool QJSManagedValue::isDate() const

Возвращает true если это значение представляет собой объект JavaScript Date, или false в противном случае.

bool QJSManagedValue::isError() const

Возвращает true если это значение представляет собой объект JavaScript Error, или false в противном случае.

bool QJSManagedValue::isFunction() const

Возвращает true если тип этого QJSManagedValue является function, false в противном случае.

bool QJSManagedValue::isInteger() const

Возвращает true если этот QJSManagedValue содержит целое число, или false в противном случае. Формат хранения числа не влияет на результаты операций с ним, но если число целочисленное, то многие операции выполняются быстрее.

bool QJSManagedValue::isNull() const

Возвращает true если этот QJSManagedValue содержит значение JavaScript null, или false в противном случае.

bool QJSManagedValue::isNumber() const

Возвращает true если тип этого QJSManagedValue является number, или false в противном случае.

bool QJSManagedValue::isObject() const

Возвращает true если тип этого QJSManagedValue является object, или false в противном случае.

bool QJSManagedValue::isQMetaObject() const

Возвращает true если это значение представляет собой указатель QMetaObject, управляемый в куче JavaScript, или false в противном случае.

bool QJSManagedValue::isQObject() const

Возвращает true если это значение представляет собой указатель QObject, управляемый в куче JavaScript, или false в противном случае.

bool QJSManagedValue::isRegularExpression() const

Возвращает true если это значение представляет собой объект JavaScript регулярного выражения, или false в противном случае.

bool QJSManagedValue::isString() const

Возвращает true если тип этого QJSManagedValue является string, или false в противном случае.

bool QJSManagedValue::isSymbol() const

Возвращает true если тип этого QJSManagedValue является symbol, или false в противном случае.

bool QJSManagedValue::isUndefined() const

Возвращает true если тип этого QJSManagedValue является undefined, или false в противном случае.

bool QJSManagedValue::isUrl() const

Возвращает true если это значение представляет собой объект JavaScript Url, или false в противном случае.

bool QJSManagedValue::isVariant() const

Возвращает true если это значение представляет собой QVariant, управляемый в куче JavaScript, или false в противном случае.

QJSValue QJSManagedValue::property(const QString &name) const

Возвращает свойство name этого QJSManagedValue. Если свойство не найдено в объекте, выполняется поиск по цепочке прототипов.

См. также setProperty().

QJSValue QJSManagedValue::property(quint32 arrayIndex) const

Возвращает свойство, хранящееся в arrayIndex этого QJSManagedValue. Если свойство не найдено в объекте, выполняется поиск по цепочке прототипов.

QJSManagedValue QJSManagedValue::prototype() const

Возвращает прототип для этого QJSManagedValue. Это работает с любым значением. Например, можно получить прототип JavaScript boolean из значения boolean.

См. также setPrototype().

void QJSManagedValue::setProperty(const QString &name, const QJSValue &value)

Устанавливает свойство name в значение value для этого QJSManagedValue. Это можно сделать только для значений JavaScript типа object. Кроме того, value должно быть либо примитивным типом, либо принадлежать тому же движку, что и это значение.

См. также property().

void QJSManagedValue::setProperty(quint32 arrayIndex, const QJSValue &value)

Хранит value по индексу arrayIndex в этом QJSManagedValue. Это можно сделать только для значений JavaScript типа object, и не рекомендуется, если значение не является массивом. Кроме того, value должно быть либо примитивным типом, либо принадлежать тому же движку, что и это значение.

void QJSManagedValue::setPrototype(const QJSManagedValue &prototype)

Устанавливает прототип этого QJSManagedValue в prototype. Условие – prototype принадлежит тому же QJSEngine, что и этот QJSManagedValue, и является объектом (включая null). Кроме того, этот QJSManagedValue тоже должен быть объектом (исключая null), и нельзя создавать циклы прототипов.

См. также prototype().

bool QJSManagedValue::strictlyEquals(const QJSManagedValue &other) const

Вызывает оператор JavaScript '===' для этого QJSManagedValue и other и возвращает результат.

См. также equals.

bool QJSManagedValue::toBoolean() const

Преобразует управляемое значение в булево. Если управляемое значение содержит булево, то возвращается это значение. В противном случае выполняется преобразование в булево по правилам JavaScript.

QDateTime QJSManagedValue::toDateTime() const

Если этот QJSManagedValue содержит объект JavaScript Date, возвращает эквивалентное QDateTime. В противном случае возвращает недействительное значение.

int QJSManagedValue::toInteger() const

Преобразует управляемое значение в целое число. Сначала значение преобразуется в число по правилам toNumber(), а затем ограничено диапазоном целых чисел по правилам, заданным для приведения аргументов к операторам битового сдвига JavaScript в 32-битные целые числа.

Внутренне значение может уже храниться как целое число, в этом случае используется быстрый путь.

Примечание: Преобразование управляемого значения в число может вызвать исключение. В частности, символы не могут быть преобразованы в числа, или метод valueOf() может вызвать исключение. В этом случае результат равен 0, а движок получает ошибку после преобразования.

Примечание: Правила JavaScript для преобразования чисел в 32-битные целые числа неинтуитивны.

QJSValue QJSManagedValue::toJSValue() const

Копирует этот QJSManagedValue в новый QJSValue. Это менее эффективно, чем создание QJSValue из QJSManagedValue с использованием перемещения, но сохраняет QJSManagedValue.

double QJSManagedValue::toNumber() const

Преобразует управляемое значение в число. Если управляемое значение содержит число, возвращает это число. В противном случае выполняется приведение к числу по правилам JavaScript.

Примечание: Преобразование управляемого значения в число может вызвать исключение. В частности, символы не могут быть приведены к числам, или пользовательский метод valueOf() может вызвать исключение. В этом случае результат равен 0, и в движке сохраняется ошибка после преобразования.

QJSPrimitiveValue QJSManagedValue::toPrimitive() const

Преобразует управляемое значение в QJSPrimitiveValue. Если управляемое значение содержит тип, поддерживаемый QJSPrimitiveValue, значение копируется. В противном случае значение преобразуется в строку, и строка хранится в QJSPrimitiveValue.

Примечание: Преобразование управляемого значения в строку может вызвать исключение. В частности, символы не могут быть приведены к строкам, или пользовательский метод toString() может вызвать исключение. В этом случае результатом является неопределенное значение, и в движке сохраняется ошибка после преобразования.

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() может вызвать исключение. В этом случае результатом является пустая строка, и в движке сохраняется ошибка после преобразования.

QUrl QJSManagedValue::toUrl() const

Если этот QJSManagedValue содержит объект JavaScript Url, возвращает эквивалентный QUrl. В противном случае возвращает некорректное значение.

QVariant QJSManagedValue::toVariant() const

Копирует этот QJSManagedValue в новый QVariant. Это также создает полезный QVariant, если QJSManagedValue::isVariant() возвращает false. QVariant может содержать все типы, поддерживаемые QJSManagedValue.

QJSManagedValue::Type QJSManagedValue::type() const

Возвращает тип JavaScript этого QJSManagedValue.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qjsmanagedvalue.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API