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(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标准中定义的大多数基元类型,尤其是未定义类型、布尔类型、数字类型和字符串类型。此外,您还可以在 QJSPrimitiveValue 中存储 JavaScript 空值,作为 Number 的一种特殊情况,您还可以存储整数值。
所有这些值都是立即存储的,无需与 JavaScript 堆交互。因此,您可以在不同的 JavaScript 引擎之间传递 QJSPrimitiveValue。与QJSManagedValue 不同的是,在不同的线程中销毁 QJSPrimitiveValue 也不会有任何危险。另一方面,QJSPrimitiveValue 不持有对任何 JavaScript 引擎的引用。
QJSPrimitiveValue 在 JavaScript 语义所支持的类型上实现了 JavaScript 算术和比较运算符。在 JavaScript 表达式中写入运算符时,JavaScript 引擎会对类型进行强制处理。
我们不支持 JavaScript 符号类型,因为它在算术和比较运算符方面的作用非常有限,而这正是 QJSPrimitiveValue 的主要目的。特别是,每当您尝试将其强制为数字或字符串时,它都会导致异常,而我们不能在没有 JavaScript 引擎的情况下抛出异常。
成员类型文档
enum QJSPrimitiveValue::Type
该枚举说明了QJSPrimitiveValue 可能包含的类型。
常量 | 值 | 描述 |
---|---|---|
QJSPrimitiveValue::Undefined | 0 | JavaScript 未定义值。 |
QJSPrimitiveValue::Null | 1 | JavaScript 空值。事实上,这不是一个单独的 JavaScript 类型,而是对象类型的一个特殊值。由于它非常常见,且无需 JavaScript 引擎即可存储,因此仍受支持。 |
QJSPrimitiveValue::Boolean | 2 | JavaScript 布尔值 |
QJSPrimitiveValue::Integer | 3 | 整数。这是 JavaScript Number 类型的一种特殊情况。JavaScript 并没有真正的整数类型,但ECMA-262标准包含了如何转换 Number 的规则,以便为某些只对整数有意义的运算符(尤其是位移运算符)做好准备。QJSPrimitiveValueJavaScript的整数类型就是这种转换的结果。 |
QJSPrimitiveValue::Double | 4 | JavaScript 数字值 |
QJSPrimitiveValue::String | 5 | JavaScript 字符串值 |
成员函数文档
[constexpr, since 6.6]
const void *QJSPrimitiveValue::constData() const
[constexpr, since 6.6]
const void *QJSPrimitiveValue::data() const
以无法写入的通用 void* 返回所含值的指针。
此函数在 Qt 6.6 中引入。
[constexpr noexcept]
QJSPrimitiveValue::QJSPrimitiveValue()
创建未定义类型的 QJSPrimitiveValue。
[constexpr noexcept]
QJSPrimitiveValue::QJSPrimitiveValue(QJSPrimitiveNull null)
创建值为null 且类型为 Null 的 QJSPrimitiveValue。
[constexpr noexcept]
QJSPrimitiveValue::QJSPrimitiveValue(QJSPrimitiveUndefined undefined)
创建值为undefined 且类型为未定义的 QJSPrimitiveValue。
[noexcept]
QJSPrimitiveValue::QJSPrimitiveValue(QString value)
创建值为value 、类型为 String 的 QJSPrimitiveValue。
[constexpr noexcept]
QJSPrimitiveValue::QJSPrimitiveValue(bool value)
创建值为value 、类型为布尔的 QJSPrimitiveValue。
[explicit noexcept]
QJSPrimitiveValue::QJSPrimitiveValue(const QVariant &value)
如果value 中的内容可以存储在 QJSPrimtiveValue 中,则根据这些内容创建一个 QJSPrimtiveValue。否则,将产生一个未定义类型的 QJSPrimitiveValue。
[constexpr noexcept]
QJSPrimitiveValue::QJSPrimitiveValue(double value)
创建值为value 、类型为 Double 的 QJSPrimitiveValue。
[constexpr noexcept]
QJSPrimitiveValue::QJSPrimitiveValue(int value)
创建值为value 且类型为整数的 QJSPrimitiveValue。
[noexcept default, since 6.4]
QJSPrimitiveValue::QJSPrimitiveValue(QMetaType type, const void *value)
创建一个type 类型的 QJSPrimitiveValue,如果type 可以存储在 QJSPrimtiveValue 中,则使用value 进行初始化。在这种情况下,value 不能为 nullptr。如果type 无法存储,则会产生一个未定义类型的 QJSPrimitiveValue。
请注意,您必须传递希望存储的变量的地址。
通常情况下,您不必使用该构造函数,而应使用QVariant 。
此函数在 Qt 6.4 中引入。
[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
将值强制转换为指定类型,并将结果作为一个新的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 中引入。
© 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.