QJSManagedValue Class

QJSManagedValueは、QJSEngine に属するJavaScriptヒープ上の値を表す

ヘッダー #include <QJSManagedValue>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml
以来:Qt 6.1

パブリックな型

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

パブリック関数

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)

詳細な説明

QJSManagedValue クラスは、JavaScript の値と対話することができます。プロパティやプロトタイプの取得と設定、配列へのアクセスが可能です。さらに、値を JavaScript オブジェクトの Qt 対応物に変換することもできます。例えば、UrlオブジェクトはQUrl に変換できます。

QJSManagedValueは、常に特定のQJSEngine 。独立して使用することはできません。つまり、あるエンジンのQJSManagedValueを、別のエンジンのQJSManagedValueのプロパティやプロトタイプにすることはできません。

QJSValue とは対照的に、QJSManagedValueによって保持されるほとんどすべての値は、JavaScriptヒープ上に存在します。インラインストレージやアンマネージドストレージはありません。したがって、プリミティブ値のプロトタイプを取得したり、文字列のlength プロパティを取得することができます。

QJSManagedValue は、JavaScript ヒープ上に値を保持しません。これらは、プロパティやプロトタイプを持たないundefined を表します。

また、QJSValue とは対照的に、QJSManagedValue は JavaScript の例外をキャッチしません。QJSManagedValue に対する操作でエラーが発生した場合、一般的にundefined が返され、QJSEngine::hasError() はその後にtrue を返します。その後、QJSEngine::catchError ()を使用して例外をキャッチするか、独自の判断でスタックに渡すことができます。

注意: JavaScriptヒープ上の値への参照は破棄時に解放されなければならないので、QJSManagedValueを別のスレッドに移動することはできません。破棄は新しいスレッドで行われるため、元のスレッドのガベージコレクタと競合状態が発生します。これは、エンジンの寿命を超えてQJSManagedValueを保持できないことも意味します。

推奨されるQJSManagedValueの操作方法は、スタック上にQJSManagedValueを作成し、QJSValue 、エンジンを追加し、必要な操作を行い、最後にQJSValue 、格納することです。QJSManagedValueとQJSValue 間の移動は高速である。

メンバ型ドキュメント

enum QJSManagedValue::Type

この列挙型は、ECMA-262 で規定されている JavaScript のネイティブ型を表します。

定数説明
QJSManagedValue::Undefined0undefined
QJSManagedValue::Boolean1boolean
QJSManagedValue::Number2number
QJSManagedValue::String3string タイプ
QJSManagedValue::Object4object タイプ
QJSManagedValue::Symbol5symbol タイプ
QJSManagedValue::Function6function タイプ

null の値はそれ自体の型ではなく、特別な種類のオブジェクトであることに注意してください。isNull() メソッドを使えば、この条件に対してQJSManagedValue を問い合わせることができる。さらに、JavaScriptには整数型はありませんが、整数のみの演算に備え、数値の特別な扱いを知っています。isInteger() メソッドを使えば、QJSManagedValue に問い合わせて、そのような処理の結果を保持しているかどうかを調べることができる。

メンバ関数のドキュメント

[constexpr noexcept] QJSManagedValue::QJSManagedValue()

JavaScriptundefined の値を表す QJSManagedValue を作成します。これはJavaScriptのヒープに保存されていない唯一の値です。デフォルトで構築された QJSManagedValue でengine() を呼び出すと、nullptr が返されます。

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

engine のヒープを使用して、value から QJSManagedValue を作成します。value 自身が管理されており、それが属するエンジンがengine でない場合、結果はundefined 値となり、警告が生成されます。

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

engine のヒープを使用して、value から QJSManagedValue を作成します。

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

engine のヒープを使用して、string から QJSManagedValue を作成します。

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

engine のヒープを使用して、variant から QJSManagedValue を作成します。

QJSManagedValue::QJSManagedValue(QJSManagedValue &&other)

Move-constructed QJSManagedValue fromother. これにより、other は、未定義を表し、どのエンジンにも属さないデフォルトの構築状態になります。

[noexcept] QJSManagedValue::~QJSManagedValue()

QJSManagedValue を破壊する。

注意: これはJavaScriptヒープ上のメモリスロットを解放します。QJSEngine が属しているスレッドとは異なるスレッドからQJSManagedValue を破棄してはいけません。

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

このQJSManagedValue が JavaScript FunctionObject を表している場合、与えられたarguments で FunctionObject を呼び出し、その結果を返す。そうでない場合は、JavaScriptundefined の値を返します。

arguments はプリミティブ値であるか、このQJSManagedValue と同じQJSEngine に属していなければならない。そうでない場合、呼び出しは実行されず、JavaScriptundefined の値が返されます。

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

このQJSManagedValue が JavaScript FunctionObject を表している場合、与えられたarguments でそれをコンストラクタとして呼び出し、その結果を返す。そうでない場合は、JavaScriptundefined の値を返します。

arguments はプリミティブ値であるか、このQJSManagedValue と同じQJSEngine に属していなければなりません。そうでない場合、呼び出しは実行されず、JavaScriptundefined の値が返されます。

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

このQJSManagedValue が JavaScript FunctionObject を表している場合、与えられたargumentsinstance を呼び出し、その結果を返す。そうでない場合は、JavaScriptundefined の値を返します。

argumentsinstance は、プリミティブ値であるか、このQJSManagedValue と同じQJSEngine に属していなければならない。そうでない場合、呼び出しは実行されず、JavaScript のundefined 値が返される。

bool QJSManagedValue::deleteProperty(const QString &name)

このQJSManagedValue からプロパティname を削除する。削除に成功した場合はtrue を、失敗した場合はfalse を返します。

bool QJSManagedValue::deleteProperty(quint32 arrayIndex)

QJSManagedValue からarrayIndex に格納されている値を削除する。削除が成功した場合はtrue を返し、そうでない場合はfalse を返す。

QJSEngine *QJSManagedValue::engine() const

このQJSManagedValue が属するQJSEngine を返す。QJSManagedValue がデフォルトで構築されているか、移動していない限り、エンジンは常に有効であることに注意してください。後者の場合はnullptrが返される。

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

JavaScriptの'=='演算子をこのQJSManagedValueother に対して実行し、結果を返します。

strictlyEqualsも参照してください

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

このQJSManagedValue がプロパティname を持っていればtrue を返し、そうでなければfalse を返す。プロトタイプ・チェインのプロパティは考慮されない。

bool QJSManagedValue::hasOwnProperty(quint32 arrayIndex) const

このQJSManagedValue が配列インデックスarrayIndex を持っていればtrue を返し、そうでなければfalse を返す。プロトタイプ・チェインのプロパティは考慮されない。

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

このQJSManagedValue がプロパティname を持っていればtrue を返し、そうでなければfalse を返す。プロトタイプ・チェインのプロパティが考慮される。

bool QJSManagedValue::hasProperty(quint32 arrayIndex) const

このQJSManagedValue が配列インデックスarrayIndex を持つ場合はtrue を返し、そうでない場合はfalse を返す。プロトタイプ・チェインの特性が考慮される。

bool QJSManagedValue::isArray() const

この値が JavaScript Array オブジェクトを表している場合はtrue を、そうでない場合はfalse を返します。

bool QJSManagedValue::isBoolean() const

このQJSManagedValue のタイプがboolean の場合はtrue を、そうでない場合はfalse を返す。

bool QJSManagedValue::isDate() const

この値が JavaScript Date オブジェクトを表す場合はtrue を、そうでない場合はfalse を返します。

bool QJSManagedValue::isError() const

この値がJavaScriptエラーオブジェクトを表している場合はtrue 、そうでない場合はfalse

bool QJSManagedValue::isFunction() const

このQJSManagedValue の型がfunction であればtrue を、そうでなければfalse を返す。

bool QJSManagedValue::isInteger() const

このQJSManagedValue が整数値を保持している場合はtrue を、そうでない場合はfalse を返す。数値の格納形式は、その数値に対して行われる操作の結果に影響しないが、整数が格納されている場合は、多くの操作が高速になる。

bool QJSManagedValue::isNull() const

このQJSManagedValue が JavaScriptnull の値を保持している場合はtrue を、そうでない場合はfalse を返す。

bool QJSManagedValue::isNumber() const

このQJSManagedValue のタイプがnumber の場合はtrue を、そうでない場合はfalse を返す。

bool QJSManagedValue::isObject() const

このQJSManagedValue のタイプがobject の場合はtrue を、そうでない場合はfalse を返す。

bool QJSManagedValue::isQMetaObject() const

この値がJavaScriptヒープ上で管理されているQMetaObject ポインタを表している場合はtrue 、そうでない場合はfalse を返す。

bool QJSManagedValue::isQObject() const

この値がJavaScriptヒープ上で管理されているQObject ポインタを表している場合はtrue 、そうでない場合はfalse を返す。

bool QJSManagedValue::isRegularExpression() const

この値がJavaScript正規表現オブジェクトを表している場合はtrue を、そうでない場合はfalse を返します。

bool QJSManagedValue::isString() const

このQJSManagedValue のタイプがstring の場合はtrue を、そうでない場合はfalse を返す。

bool QJSManagedValue::isSymbol() const

このQJSManagedValue のタイプがsymbol の場合はtrue を、そうでない場合はfalse を返す。

bool QJSManagedValue::isUndefined() const

このQJSManagedValue のタイプがundefined の場合はtrue を、そうでない場合はfalse を返す。

bool QJSManagedValue::isUrl() const

この値がJavaScriptのUrlオブジェクトを表している場合はtrue 、そうでない場合はfalse

bool QJSManagedValue::isVariant() const

この値がJavaScriptヒープ上で管理されているQVariant を表している場合はtrue 、そうでない場合はfalse を返す。

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

このQJSManagedValue のプロパティname を返します。実際のオブジェクトにプロパティが見つからない場合は、プロトタイプ・チェインが検索されます。

setProperty()も参照してください

QJSValue QJSManagedValue::property(quint32 arrayIndex) const

このQJSManagedValuearrayIndex に格納されているプロパティを返します。プロパティが実際のオブジェクトに見つからない場合は、プロトタイプ・チェインが検索されます。

QJSManagedValue QJSManagedValue::prototype() const

このQJSManagedValue のプロトタイプを返します。これはどのような値に対しても動作します。例えば、boolean の値から JavaScriptboolean のプロトタイプを取得することができます。

setPrototype()も参照してください

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

このQJSManagedValue のプロパティnamevalue に設定します。これは、object タイプの JavaScript 値に対してのみ実行できます。さらに、value はプリミティブであるか、この値と同じエンジンに属していなければなりません。

property()も参照してください

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

arrayIndexvalue をこのQJSManagedValue に格納する。これは、JavaScriptのobject 型の値に対してのみ可能で、値が配列でない場合は推奨されません。さらに、value はプリミティブであるか、この値と同じエンジンに属していなければなりません。

void QJSManagedValue::setPrototype(const QJSManagedValue &prototype)

このQJSManagedValue のプロトタイプをprototype に設定する。前提条件は、prototype がこのQJSManagedValue と同じQJSEngine に属し、オブジェクト(ヌルを含む)であることである。さらに、このQJSManagedValue もオブジェクト(ヌルを除く)でなければならず、プロトタイプのサイクルを作成することはできません。

prototype()も参照

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

このQJSManagedValueother に対して JavaScript の '===' 演算子を実行し、結果を返します。

equalsも参照してください

bool QJSManagedValue::toBoolean() const

管理値をブール値に変換する。管理値が真偽値を保持している場合は、その値が返されます。そうでない場合は、JavaScript のルールによる boolean の強制が実行されます。

QDateTime QJSManagedValue::toDateTime() const

このQJSManagedValue が JavaScript Date オブジェクトを保持している場合は、同等のQDateTime を返します。そうでない場合は、無効なものを返します。

int QJSManagedValue::toInteger() const

操作された値を整数に変換します。これはまずtoNumber() のルールで値を数値に変換し、JavaScriptのビットシフト演算子の引数を32ビット整数に強制するルールで整数範囲にクランプする。

内部的には、値はすでに整数として格納されている可能性があります。

注意: 管理値を数値に変換すると例外が発生することがあります。特に、シンボルを数値に強制することはできませんし、カスタムvalueOf()メソッドがスローすることもあります。この場合、結果は0となり、変換後にエンジンがエラーを発生させます。

注意: 数値を32ビット整数に強制するJavaScriptのルールは直感的ではありません。

QJSValue QJSManagedValue::toJSValue() const

このQJSManagedValue を新しいQJSValue にコピーする。これはQJSManagedValue からQJSValue を移動構築するよりも効率が悪いが、QJSManagedValue を保持する。

double QJSManagedValue::toNumber() const

管理値を数値に変換する。管理値が数値を保持している場合は、その数値が返されます。そうでない場合は、JavaScript のルールによる数値の強制が実行されます。

注意: 管理値から数値への変換は例外を投げる可能性があります。特に、記号を数値に強制することはできませんし、カスタムの valueOf() メソッドがスローすることもあります。この場合、結果は0となり、変換後にエンジンがエラーを伝えます。

QJSPrimitiveValue QJSManagedValue::toPrimitive() const

QJSPrimitiveValue管理値がQJSPrimitiveValue でサポートされる型を保持している場合、その値はコピーされる。そうでない場合、値は文字列に変換され、文字列はQJSPrimitiveValue に格納される。

注意: 管理された値を文字列に変換すると、例外が発生することがある。特に、シンボルを文字列に強制することはできませんし、カスタムのtoString() メソッドがスローすることもあります。この場合、結果は未定義値となり、変換後にエンジンはエラーを出力します。

const QMetaObject *QJSManagedValue::toQMetaObject() const

このQJSManagedValueQMetaObject ポインタを保持していれば、それを返す。そうでなければnullptrを返す。

QObject *QJSManagedValue::toQObject() const

このQJSManagedValueQObject ポインタを保持していれば、それを返す。そうでなければ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 にコピーする。また、QJSManagedValue::isVariant() がfalseを返した場合にも、有用なQVariant を作成する。QVariant は、QJSManagedValue がサポートするすべての型を保持することができる。

QJSManagedValue::Type QJSManagedValue::type() const

このQJSManagedValue の JavaScript 型を返します。

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

Move-assign aQJSManagedValue fromother. これにより、other は未定義を表し、どのエンジンにも属さないデフォルト構築状態になります。

注意: これにより、このQJSManagedValue が JavaScript ヒープ上に保持するメモリ スロットが解放されます。QJSEngine が属しているスレッドとは異なるスレッドでQJSManagedValue を移動代入してはいけません。

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