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.
| Constante | Valeur | Description |
|---|---|---|
QJSManagedValue::Undefined | 0 | Le type « undefined » |
QJSManagedValue::Boolean | 1 | Le type ` boolean ` |
QJSManagedValue::Number | 2 | Le type « number » |
QJSManagedValue::String | 3 | Le type « string » |
QJSManagedValue::Object | 4 | Le type « object » |
QJSManagedValue::Symbol | 5 | Le type « symbol » |
QJSManagedValue::Function | 6 | Le 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.