Spec-Zone.ru › Qt 6.1

Класс 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 происходит быстро.

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

enum 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 содержит объект URL JavaScript, возвращает эквивалентный 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.1/qjsmanagedvalue.html

Spec-Zone.ru

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