本页内容

QJSPrimitiveValue Class

QJSPrimitiveValue 类基于 JavaScript 语义对基本类型进行操作。更多内容...

头文件: #include <QJSPrimitiveValue>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml
自: Qt 6.1

公共类型

enum Type { Undefined, Null, Boolean, Integer, Double, String }

公共函数

QJSPrimitiveValue()
QJSPrimitiveValue(QJSPrimitiveNull null)
QJSPrimitiveValue(QJSPrimitiveUndefined undefined)
QJSPrimitiveValue(QJSPrimitiveValue::Type)
QJSPrimitiveValue(QString value)
QJSPrimitiveValue(bool value)
QJSPrimitiveValue(const QVariant &value)
QJSPrimitiveValue(double value)
QJSPrimitiveValue(int value)
(since 6.4) QJSPrimitiveValue(QMetaType type, const void *value)
(since 6.6) const void *constData() const
(since 6.6) void *data()
(since 6.6) const void *data() const
bool equals(const QJSPrimitiveValue &other) const
(since 6.6) QMetaType metaType() const
bool strictlyEquals(const QJSPrimitiveValue &other) const
(since 6.6) QJSPrimitiveValue to() const
bool toBoolean() const
double toDouble() const
int toInteger() const
QString toString() const
QJSPrimitiveValue::Type type() const
(since 6.1) bool operator!=(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(since 6.1) QJSPrimitiveValue operator*(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(since 6.1) QJSPrimitiveValue operator+(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(since 6.1) QJSPrimitiveValue operator-(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(since 6.1) QJSPrimitiveValue operator/(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(since 6.1) bool operator<(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(since 6.1) bool operator<=(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(since 6.1) bool operator==(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(since 6.1) bool operator>(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(since 6.1) bool operator>=(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

详细说明

QJSPrimitiveValue 支持ECMA-262标准中定义的大多数基本类型,特别是 Undefined、Boolean、Number 和 String。此外,您可以在 QJSPrimitiveValue 中存储 JavaScript 的 null 值,并且作为 Number 的特例,还可以存储整数值。

所有这些值都会被立即存储,无需与 JavaScript 堆进行交互。因此,您可以在不同的 JavaScript 引擎之间传递 QJSPrimitiveValue。与 `QJSManagedValue` 不同,在与创建该 QJSPrimitiveValue 不同的线程中销毁它也不会造成任何风险。 另一方面,`QJSPrimitiveValue` 并不持有对任何 JavaScript 引擎的引用。

QJSPrimitiveValue 基于 JavaScript 语义,在支持的类型上实现了 JavaScript 算术运算符和比较运算符。类型的强制转换方式与 JavaScript 引擎在运算符写入 JavaScript 表达式时所进行的强制转换一致。

JavaScript 的 Symbol 类型不受支持,因为就 QJSPrimitiveValue 的主要用途——算术和比较运算符而言,该类型的实用性非常有限。特别是,每当尝试将其强制转换为数字或字符串时,它都会引发异常,而没有 JavaScript 引擎的情况下,我们无法抛出异常。

成员类型文档

enum QJSPrimitiveValue::Type

此枚举指定了QJSPrimitiveValue 可能包含的类型。

常量值描述
QJSPrimitiveValue::Undefined0JavaScript 的 Undefined 值。
QJSPrimitiveValue::Null1JavaScript 的 null 值。这实际上并不是一个独立的 JavaScript 类型,而是 Object 类型的特殊值。由于它非常常见,且无需 JavaScript 引擎即可存储,因此仍然受到支持。
QJSPrimitiveValue::Boolean2JavaScript 布尔值。
QJSPrimitiveValue::Integer3一个整数。这是 JavaScript Number 类型的特例。 JavaScript 并没有真正的整数类型,但ECMA-262标准包含了一些规则,说明如何转换 Number 类型,以便使其适用于仅对整数有意义的某些运算符,特别是位移运算符。QJSPrimitiveValue 的 Integer 类型代表了此类转换的结果。
QJSPrimitiveValue::Double4一个 JavaScript Number 值。
QJSPrimitiveValue::String5一个 JavaScript String 值。

成员函数文档

[constexpr noexcept default] QJSPrimitiveValue::QJSPrimitiveValue()

创建一个类型为 Undefined 的 QJSPrimitiveValue。

[constexpr noexcept] QJSPrimitiveValue::QJSPrimitiveValue(QJSPrimitiveNull null)

创建一个值为null 、类型为Null的QJSPrimitiveValue。

[constexpr noexcept] QJSPrimitiveValue::QJSPrimitiveValue(QJSPrimitiveUndefined undefined)

创建一个值为undefined 、类型为Undefined的QJSPrimitiveValue。

[delete] QJSPrimitiveValue::QJSPrimitiveValue(QJSPrimitiveValue::Type)

默认构造一个QJSPrimitiveValue 实例。该函数已被删除。

[noexcept] QJSPrimitiveValue::QJSPrimitiveValue(QString value)

创建一个值为value 、类型为String的QJSPrimitiveValue。

[constexpr noexcept] QJSPrimitiveValue::QJSPrimitiveValue(bool value)

创建一个值为value 、类型为Boolean的QJSPrimitiveValue。

[explicit noexcept] QJSPrimitiveValue::QJSPrimitiveValue(const QVariant &value)

如果value 的内容可以存储在QJSPrimitiveValue中,则根据该内容创建一个QJSPrimitiveValue;否则,将返回一个类型为Undefined的QJSPrimitiveValue。

[constexpr noexcept] QJSPrimitiveValue::QJSPrimitiveValue(double value)

创建一个值为value 、类型为Double的QJSPrimitiveValue。

[constexpr noexcept] QJSPrimitiveValue::QJSPrimitiveValue(int value)

创建一个值为value 、类型为Integer的QJSPrimitiveValue。

[noexcept implicit, since 6.4] QJSPrimitiveValue::QJSPrimitiveValue(QMetaType type, const void *value)

创建一个类型为type 的QJSPrimitiveValue,并使用value 进行初始化——前提是type 能够存储在QJSPrimitiveValue中。在此情况下,value 不能为nullptr。如果type 无法存储,则会生成一个类型为Undefined的QJSPrimitiveValue。

请注意,您必须传入要存储的变量的地址。

通常情况下,您无需使用此构造函数,请改用接受QVariant 的那个构造函数。

该函数在 Qt 6.4 中引入。

[constexpr, since 6.6] const void *QJSPrimitiveValue::constData() const

[constexpr, since 6.6] const void *QJSPrimitiveValue::data() const

返回指向所包含值的指针,该指针为不可写入的通用 void* 类型。

这些函数是在 Qt 6.6 中引入的。

[constexpr, since 6.6] void *QJSPrimitiveValue::data()

返回指向所包含数据的指针,该指针为可写入的通用 void* 类型。

该函数在 Qt 6.6 中引入。

[constexpr] bool QJSPrimitiveValue::equals(const QJSPrimitiveValue &other) const

对该QJSPrimitiveValue 和other 执行JavaScript的“==”运算,并返回结果。

[constexpr, since 6.6] QMetaType QJSPrimitiveValue::metaType() const

返回存储在QJSPrimitiveValue 中的值的QMetaType 。

该函数于 Qt 6.6 中引入。

[constexpr] bool QJSPrimitiveValue::strictlyEquals(const QJSPrimitiveValue &other) const

对该QJSPrimitiveValue 和other 执行JavaScript的“===”运算,并返回结果。

[since 6.6] template <QJSPrimitiveValue::Type type> QJSPrimitiveValue QJSPrimitiveValue::to() const

将值强制转换为指定的type ,并将结果作为新的QJSPrimitiveValue 返回。

该函数在 Qt 6.6 中引入。

另请参阅 toBoolean()、toInteger()、toDouble() 以及toString()。

[constexpr] bool QJSPrimitiveValue::toBoolean() const

返回根据 JavaScript 规则强制转换为布尔值的值。

[constexpr] double QJSPrimitiveValue::toDouble() const

返回根据 JavaScript 规则强制转换为 JavaScript 数值(Number)的值。

[constexpr] int QJSPrimitiveValue::toInteger() const

返回一个值,该值已根据 JavaScript 在准备位移操作时所采用的规则,被强制转换为 32 位整数。

QString QJSPrimitiveValue::toString() const

返回根据 JavaScript 规则强制转换为 JavaScript 字符串的值。

[constexpr] QJSPrimitiveValue::Type QJSPrimitiveValue::type() const

返回QJSPrimitiveValue 的类型。

相关非成员

[constexpr, since 6.1] bool operator!=(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

对lhs 和rhs 执行 JavaScript 的 '!==' 运算,并返回结果。

该函数于 Qt 6.1 中引入。

[since 6.1] QJSPrimitiveValue operator*(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

对lhs 和rhs 执行JavaScript中的“*”运算,并返回结果。

该函数在 Qt 6.1 中引入。

[since 6.1] QJSPrimitiveValue operator+(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

对 `lhs ` 和 `rhs` 执行 JavaScript 的“+”运算,并返回结果。

该函数于 Qt 6.1 中引入。

[since 6.1] QJSPrimitiveValue operator-(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

对lhs 和rhs 执行JavaScript的“−”运算,并返回结果。

该函数于 Qt 6.1 中引入。

[since 6.1] QJSPrimitiveValue operator/(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

对lhs 和rhs 执行 JavaScript 的“/”运算,并返回结果。

该函数在 Qt 6.1 中引入。

[constexpr, since 6.1] bool operator<(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

对lhs 和rhs 执行JavaScript的“<”运算,并返回结果。

该函数在 Qt 6.1 中引入。

[constexpr, since 6.1] bool operator<=(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

对lhs 和rhs 执行JavaScript的'<='运算,并返回结果。

该函数于 Qt 6.1 版本中引入。

[constexpr, since 6.1] bool operator==(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

对lhs 和rhs 执行JavaScript的“===”运算,并返回结果。

该函数于 Qt 6.1 版本中引入。

[constexpr, since 6.1] bool operator>(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

对 `lhs ` 和 `rhs` 执行 JavaScript 的“>”运算,并返回结果。

该函数于 Qt 6.1 中引入。

[constexpr, since 6.1] bool operator>=(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

对 `lhs ` 和 `rhs` 执行 JavaScript 的 '>=' 运算,并返回结果。

该函数于 Qt 6.1 中引入。

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