Sur cette page

QJSManagedValue Class

QJSManagedValue représente une valeur du tas JavaScript appartenant à un objet de type ` QJSEngine`. En savoir plus...

En-tête : #include <QJSManagedValue>
CMake : find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake : QT += qml
Depuis : Qt 6.1

Types publics

enum Type { Undefined, Boolean, Number, String, Object, …, Function }

Fonctions publiques

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)

Description détaillée

La classe QJSManagedValue permet d’interagir avec les valeurs JavaScript de la plupart des façons dont vous pouvez interagir avec elles depuis JavaScript lui-même. Vous pouvez obtenir et définir des propriétés et des prototypes, et vous pouvez accéder aux tableaux. De plus, vous pouvez transformer la valeur en équivalents Qt des objets JavaScript. Par exemple, un objet Url peut être transformé en QUrl.

Un `QJSManagedValue` est toujours lié à un ` QJSEngine` particulier. Vous ne pouvez pas l'utiliser de manière indépendante. Cela signifie qu'un `QJSManagedValue` provenant d'un moteur ne peut pas être une propriété ou un prototype d'un `QJSManagedValue` provenant d'un autre moteur.

Contrairement à ` QJSValue`, la quasi-totalité des valeurs détenues par un `QJSManagedValue` résident dans le tas JavaScript. Il n’y a pas de stockage en ligne ni non géré. Par conséquent, vous pouvez obtenir le prototype d’une valeur primitive, et vous pouvez accéder à la propriété ` length ` d’une chaîne de caractères.

Seuls les `QJSManagedValue` créés par défaut ou déplacés ne contiennent pas de valeur dans le tas JavaScript. Ils représentent ` undefined`, qui ne possède ni propriété ni prototype.

De plus, contrairement à QJSValue, QJSManagedValue n’intercepte aucune exception JavaScript. Si une opération sur un QJSManagedValue provoque une erreur, elle renvoie généralement une valeur undefined et QJSEngine::hasError() renverra ensuite true. Vous pouvez alors intercepter l’exception à l’aide de QJSEngine::catchError(), ou la transmettre vers le haut de la pile, à votre discrétion.

Remarque : comme la référence à la valeur dans le tas JavaScript doit être libérée lors de la destruction, vous ne pouvez pas déplacer un `QJSManagedValue` vers un autre thread. La destruction aurait lieu dans le nouveau thread, ce qui créerait une condition de concurrence avec le ramasse-miettes sur le thread d’origine. Cela signifie également que vous ne pouvez pas conserver un `QJSManagedValue` au-delà de la durée de vie de son moteur.

La méthode recommandée pour utiliser un `QJSManagedValue` consiste à le créer sur la pile, éventuellement en le transférant depuis un ` QJSValue ` et en y ajoutant un moteur, puis à effectuer les opérations nécessaires dessus, et enfin à le transférer à nouveau vers un ` QJSValue ` pour le stocker. Le transfert entre un `QJSManagedValue` et un ` QJSValue ` est rapide.

Documentation sur les types de membres

enum QJSManagedValue::Type

Cette énumération représente les types natifs de JavaScript, tels que définis par la norme ECMA-262.

ConstanteValeurDescription
QJSManagedValue::Undefined0Le type « undefined »
QJSManagedValue::Boolean1Le type ` boolean `
QJSManagedValue::Number2Le type « number »
QJSManagedValue::String3Le type « string »
QJSManagedValue::Object4Le type « object »
QJSManagedValue::Symbol5Le type « symbol »
QJSManagedValue::Function6Le type « function »

Notez que la valeur « null » n’est pas un type en soi, mais plutôt un type d’objet particulier. Vous pouvez interroger un « QJSManagedValue » pour connaître cette condition à l’aide de la méthode « isNull()». De plus, JavaScript ne dispose pas de type entier, mais il applique un traitement particulier aux nombres en vue d’opérations réservées aux entiers. Vous pouvez interroger un QJSManagedValue pour savoir s’il contient le résultat d’un tel traitement à l’aide de la méthode isInteger().

Documentation sur les fonctions membres

[constexpr noexcept default] QJSManagedValue::QJSManagedValue()

Crée un objet `QJSManagedValue` représentant la valeur ` undefined ` de JavaScript. Il s'agit de la seule valeur qui n'est pas stockée dans le tas de JavaScript. L'appel de la fonction ` engine()` sur un objet `QJSManagedValue` construit par défaut renverra `nullptr`.

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

Crée un objet `QJSManagedValue` à partir de ` value`, en utilisant le tas de ` engine`. Si ` value ` est lui-même géré et que le moteur auquel il appartient n'est pas ` engine`, le résultat est une valeur ` undefined ` et un avertissement est généré.

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

Crée un objet `QJSManagedValue` à partir d'un objet ` value ` en utilisant le tas de ` engine`.

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

Crée un objet `QJSManagedValue` à partir d'un objet ` string ` en utilisant le tas de l'objet ` engine`.

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

Crée un objet `QJSManagedValue` à partir d'un objet ` variant ` en utilisant le tas de ` engine`.

QJSManagedValue::QJSManagedValue(QJSManagedValue &&other)

Crée un objet `QJSManagedValue` à partir de ` other`. Cela laisse ` other ` dans son état de construction par défaut, où il représente la valeur « undefined » et n'appartient à aucun moteur.

[noexcept] QJSManagedValue::~QJSManagedValue()

Détruit l'QJSManagedValue.

Remarque : cette opération libère l'espace mémoire qu'il occupe dans le tas JavaScript. Vous ne devez pas détruire un objet ` QJSManagedValue ` à partir d'un thread différent de celui où réside l'QJSEngine, auquel il appartient.

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

Si cet QJSManagedValue représente un FunctionObject JavaScript, il l'appelle avec l'arguments on fournie et renvoie le résultat. Sinon, il renvoie une valeur de type undefined JavaScript.

Les arguments doivent être soit des valeurs primitives, soit appartenir au même QJSEngine que ce QJSManagedValue. Sinon, l'appel n'est pas exécuté et une valeur JavaScript undefined est renvoyée.

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

Si cet QJSManagedValue représente un FunctionObject JavaScript, il l'appelle en tant que constructeur avec l'arguments on fournie et renvoie le résultat. Sinon, il renvoie une valeur de type undefined JavaScript.

Les arguments doivent être soit des valeurs primitives, soit appartenir au même QJSEngine que ce QJSManagedValue. Sinon, l’appel n’est pas exécuté et une valeur JavaScript de type undefined est renvoyée.

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

Si cet QJSManagedValue représente un FunctionObject JavaScript, la fonction l’appelle via instance avec l’ arguments fournie, puis renvoie le résultat. Sinon, elle renvoie une valeur undefined JavaScript.

L'arguments et l'instance doivent être soit des valeurs primitives, soit appartenir au même QJSEngine que cet QJSManagedValue. Dans le cas contraire, l'appel n'est pas exécuté et une valeur JavaScript de type undefined est renvoyée.

bool QJSManagedValue::deleteProperty(const QString &name)

Supprime la propriété « name » de cet objet « QJSManagedValue ». Renvoie « true » si la suppression a réussi, ou « false » dans le cas contraire.

bool QJSManagedValue::deleteProperty(quint32 arrayIndex)

Supprime la valeur stockée à l'adresse arrayIndex à partir de cette adresse QJSManagedValue. Renvoie true si la suppression a réussi, ou false dans le cas contraire.

QJSEngine *QJSManagedValue::engine() const

Renvoie l'QJSEngine e à laquelle appartient cet QJSManagedValue. Notez que l'engine est toujours valide, sauf si l'QJSManagedValue e a été initialisé par défaut ou déplacé. Dans ce dernier cas, un nullptr est renvoyé.

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

Appelle l'opérateur JavaScript « == » sur ces liens QJSManagedValue et other, puis renvoie le résultat.

Voir également strictlyEquals.

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

Renvoie « true » si cet objet « QJSManagedValue » possède une propriété « name » ; sinon, renvoie « false ». Les propriétés de la chaîne de prototypes ne sont pas prises en compte.

bool QJSManagedValue::hasOwnProperty(quint32 arrayIndex) const

Renvoie ` true ` si l'QJSManagedValue ` possède un index de tableau ` arrayIndex` ; sinon, renvoie ` false`. Les propriétés de la chaîne de prototypes ne sont pas prises en compte.

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

Renvoie ` true ` si cet objet ` QJSManagedValue ` possède une propriété ` name` ; sinon, renvoie ` false`. Les propriétés de la chaîne de prototypes sont prises en compte.

bool QJSManagedValue::hasProperty(quint32 arrayIndex) const

Renvoie « true » si cet objet « QJSManagedValue » possède un index de tableau « arrayIndex » ; sinon, renvoie « false ». Les propriétés de la chaîne de prototypes sont prises en compte.

bool QJSManagedValue::isArray() const

Renvoie « true » si cette valeur correspond à un objet Array de JavaScript, ou « false » dans le cas contraire.

bool QJSManagedValue::isBoolean() const

Renvoie « true » si le type de cet objet ` QJSManagedValue ` est ` boolean`, ou « false » dans le cas contraire.

bool QJSManagedValue::isDate() const

Renvoie « true » si cette valeur correspond à un objet Date de JavaScript, ou « false » dans le cas contraire.

bool QJSManagedValue::isError() const

Renvoie « true » si cette valeur correspond à un objet « Error » de JavaScript, ou « false » dans le cas contraire.

bool QJSManagedValue::isFunction() const

Renvoie « true » si le type de cet « QJSManagedValue » est « function », et « false » dans le cas contraire.

bool QJSManagedValue::isInteger() const

Renvoie « true » si cette variable QJSManagedValue contient une valeur entière, ou « false » dans le cas contraire. Le format de stockage d'un nombre n'a aucune incidence sur le résultat des opérations effectuées sur celui-ci, mais si la variable contient un entier, de nombreuses opérations s'effectuent plus rapidement.

bool QJSManagedValue::isNull() const

Renvoie « true » si l'QJSManagedValue contient la valeur JavaScript « null », ou « false » dans le cas contraire.

bool QJSManagedValue::isNumber() const

Renvoie « true » si le type de cet objet ` QJSManagedValue ` est ` number`, ou « false » dans le cas contraire.

bool QJSManagedValue::isObject() const

Renvoie « true » si le type de cet objet ` QJSManagedValue ` est ` object`, ou « false » dans le cas contraire.

bool QJSManagedValue::isQMetaObject() const

Renvoie « true » si cette valeur correspond à un pointeur « QMetaObject » géré dans le tas JavaScript, ou « false » dans le cas contraire.

bool QJSManagedValue::isQObject() const

Renvoie « true » si cette valeur correspond à un pointeur « QObject » géré dans le tas JavaScript, ou « false » dans le cas contraire.

bool QJSManagedValue::isRegularExpression() const

Renvoie ` true ` si cette valeur correspond à un objet d'expression régulière JavaScript, ou ` false ` dans le cas contraire.

bool QJSManagedValue::isString() const

Renvoie « true » si le type de cet « QJSManagedValue » est « string », ou « false » dans le cas contraire.

bool QJSManagedValue::isSymbol() const

Renvoie « true » si le type de cet objet ` QJSManagedValue ` est ` symbol`, ou « false » dans le cas contraire.

bool QJSManagedValue::isUndefined() const

Renvoie « true » si le type de cet objet ` QJSManagedValue ` est ` undefined`, ou « false » dans le cas contraire.

bool QJSManagedValue::isUrl() const

Renvoie « true » si cette valeur correspond à un objet Url JavaScript, ou « false » dans le cas contraire.

bool QJSManagedValue::isVariant() const

Renvoie ` true ` si cette valeur correspond à une ` QVariant ` gérée dans le tas JavaScript, ou ` false ` dans le cas contraire.

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

Renvoie la propriété « name » de cet objet « QJSManagedValue ». Si la propriété n'est pas présente sur l'objet en question, la chaîne de prototypes est parcourue.

Voir aussi ` setProperty()`.

QJSValue QJSManagedValue::property(quint32 arrayIndex) const

Renvoie la propriété stockée à l'adresse arrayIndex de cet objet QJSManagedValue. Si la propriété n'est pas trouvée sur l'objet en question, la chaîne de prototypes est parcourue.

QJSManagedValue QJSManagedValue::prototype() const

Renvoie le prototype de cette QJSManagedValue. Cela fonctionne avec n'importe quelle valeur. Vous pouvez, par exemple, récupérer le prototype JavaScript boolean à partir d'une valeur boolean.

Voir également setPrototype().

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

Définit la propriété ` name ` sur ` value ` pour cet objet ` QJSManagedValue`. Cette opération ne peut être effectuée que sur des valeurs JavaScript de type ` object`. De plus, ` value ` doit être soit une valeur primitive, soit appartenir au même moteur que cette valeur.

Voir également property().

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

Enregistre l'value e à l'adresse arrayIndex dans cet objet QJSManagedValue. Cette opération ne peut être effectuée que sur des valeurs JavaScript de type object, et elle n'est pas recommandée si la valeur n'est pas un tableau. De plus, value doit être soit un type primitif, soit appartenir au même moteur que cette valeur.

void QJSManagedValue::setPrototype(const QJSManagedValue &prototype)

Définit le prototype de cet objet QJSManagedValue sur prototype. Une condition préalable est que prototype appartienne à la même instance QJSEngine que cet objet QJSManagedValue et soit un objet (y compris null). De plus, cet objet QJSManagedValue doit également être un objet (à l'exclusion de null), et il est interdit de créer des cycles de prototypes.

Voir également prototype().

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

Appelle l'opérateur JavaScript « === » sur ces éléments QJSManagedValue et other, puis renvoie le résultat.

Voir également equals.

bool QJSManagedValue::toBoolean() const

Convertit la valeur gérée en une valeur booléenne. Si la valeur gérée contient une valeur booléenne, celle-ci est renvoyée. Sinon, une conversion booléenne est effectuée selon les règles de JavaScript.

QDateTime QJSManagedValue::toDateTime() const

Si cet objet ` QJSManagedValue ` contient un objet `Date` JavaScript, renvoie un objet ` QDateTime` équivalent. Sinon, renvoie un objet non valide.

int QJSManagedValue::toInteger() const

Convertit la valeur gérée en un entier. Pour ce faire, la valeur est d’abord convertie en nombre selon les règles de la fonction ` toNumber()`, puis elle est limitée à la plage des entiers selon les règles définies pour la conversion des arguments des opérateurs de décalage de bits JavaScript en entiers de 32 bits.

En interne, la valeur peut déjà être stockée sous forme d’entier, auquel cas un chemin d’exécution rapide est emprunté.

Remarque : la conversion d’une valeur gérée en nombre peut provoquer une exception. En particulier, les symboles ne peuvent pas être convertis en nombres, sinon une méthode `valueOf()` personnalisée peut provoquer une exception. Dans ce cas, le résultat est 0 et le moteur conserve une erreur après la conversion.

Remarque : les règles JavaScript de conversion des nombres en entiers de 32 bits ne sont pas intuitives.

QJSValue QJSManagedValue::toJSValue() const

Copie cet objet QJSManagedValue dans un nouvel objet QJSValue. Cette opération est moins efficace que la construction par déplacement d'un objet QJSValue à partir d'un objet QJSManagedValue, mais conserve l'QJSManagedValue.

double QJSManagedValue::toNumber() const

Convertit la valeur gérée en nombre. Si la valeur gérée contient un nombre, celui-ci est renvoyé. Sinon, une coercition en nombre est effectuée selon les règles de JavaScript.

Remarque : la conversion d'une valeur gérée en nombre peut provoquer une exception. En particulier, les symboles ne peuvent pas être convertis en nombres, ou une méthode `valueOf()` personnalisée peut provoquer une exception. Dans ce cas, le résultat est 0 et le moteur conserve une erreur après la conversion.

QJSPrimitiveValue QJSManagedValue::toPrimitive() const

Convertit la valeur gérée en une chaîne de caractères ( QJSPrimitiveValue). Si la valeur gérée est d'un type pris en charge par la méthode ` QJSPrimitiveValue`, la valeur est copiée. Sinon, la valeur est convertie en chaîne de caractères, puis celle-ci est stockée dans ` QJSPrimitiveValue`.

Remarque : la conversion d’une valeur gérée en chaîne de caractères peut provoquer une exception. En particulier, les symboles ne peuvent pas être convertis de force en chaînes de caractères, ou une méthode personnalisée toString() peut provoquer une exception. Dans ce cas, le résultat est la valeur indéfinie et le moteur génère une erreur après la conversion.

const QMetaObject *QJSManagedValue::toQMetaObject() const

Si cet objet QJSManagedValue contient un pointeur QMetaObject, il le renvoie. Sinon, il renvoie nullptr.

QObject *QJSManagedValue::toQObject() const

Si cet objet « QJSManagedValue » contient un pointeur « QObject », il le renvoie. Sinon, il renvoie nullptr.

QRegularExpression QJSManagedValue::toRegularExpression() const

Si cette QJSManagedValue contient un objet d'expression régulière JavaScript, elle renvoie une QRegularExpression équivalente. Sinon, elle renvoie une non valide.

QString QJSManagedValue::toString() const

Convertit la valeur gérée en chaîne de caractères. Si la valeur gérée contient une chaîne de caractères, celle-ci est renvoyée. Sinon, une coercition en chaîne de caractères est effectuée selon les règles JavaScript.

Remarque : la conversion d’une valeur gérée en chaîne de caractères peut provoquer une exception. En particulier, les symboles ne peuvent pas être convertis en chaînes de caractères, ou une méthode toString() personnalisée peut provoquer une exception. Dans ce cas, le résultat est une chaîne vide et le moteur conserve une erreur après la conversion.

QUrl QJSManagedValue::toUrl() const

Si cet objet QJSManagedValue contient un objet URL JavaScript, renvoie un objet QUrl équivalent. Sinon, renvoie un objet non valide.

QVariant QJSManagedValue::toVariant() const

Copie cette adresse QJSManagedValue dans une nouvelle adresse QVariant. Cela crée également une adresse utile QVariant si la fonction QJSManagedValue::isVariant() renvoie la valeur « false ». L'adresse QVariant peut contenir tous les types pris en charge par QJSManagedValue.

QJSManagedValue::Type QJSManagedValue::type() const

Renvoie le type JavaScript de cet objet ` QJSManagedValue`.

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

La commande « move-assign » attribue un objet ` QJSManagedValue ` provenant de ` other`. Cela laisse ` other ` dans son état de construction par défaut, où il représente la valeur `undefined` et n'appartient à aucun moteur.

Remarque : cela libère l'espace mémoire occupé par cet ` QJSManagedValue ` dans le tas JavaScript. Vous ne devez pas effectuer d'affectation par déplacement d'un ` QJSManagedValue ` sur un thread différent de celui où réside l'` QJSEngine ` auquel il appartient.

© 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.