QJSPrimitiveValue 类

QJSPrimitiveValue 类在 JavaScript 语义上操作原始类型。更多...

头文件 #include <QJSPrimitiveValue>
CMakefind_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmakeQT += qml
Qt 6.1

公共类型

枚举Type { Undefined, Null, Boolean, Integer, Double, String }

公共函数

QJSPrimitiveValue()
QJSPrimitiveValue(QJSPrimitiveUndefined undefined)
QJSPrimitiveValue(QJSPrimitiveNull null)
QJSPrimitiveValue(bool value)
QJSPrimitiveValue(int value)
QJSPrimitiveValue(double value)
QJSPrimitiveValue(QString value)
QJSPrimitiveValue(const QVariant &value)
(自 6.4) QJSPrimitiveValue(QMetaType type, const void *value)
(自 6.6) const void *constData() const
(自 6.6) void *数据()
(自 6.6) const void *data() const
布尔值equals(const QJSPrimitiveValue &other) const
(自 6.6) QMetaTypemetaType() const
布尔值strictlyEquals(const QJSPrimitiveValue &other) const
(自 6.6) QJSPrimitiveValueto() const
布尔值toBoolean() const
双精度浮点数toDouble() const
整型toInteger() const
QStringtoString() const
QJSPrimitiveValue::Typetype() const
(自 6.1) booloperator!=(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(自 6.1) QJSPrimitiveValueoperator*(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(自 6.1) QJSPrimitiveValueoperator+(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(自 6.1) QJSPrimitiveValueoperator-(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(自 6.1) QJSPrimitiveValueoperator/(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(自 6.1) booloperator<(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(自 6.1) booloperator<=(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(自 6.1) booloperator==(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(自 6.1) booloperator>(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)
(自 6.1) booloperator>=(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

详细描述

QJSPrimitiveValue支持大部分由ECMA-262标准定义的基本类型,特别是Undefined、Boolean、Number和String。此外,你可以在QJSPrimitiveValue中存储JavaScript的null,以及作为Number的特殊情况,存储整数值。

所有这些值都立即存储,不与JavaScript堆进行交互。因此,你可以将QJSPrimitiveValues在不同的JavaScript引擎之间传递。与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::Boolean2一个JavaScript布尔值。
QJSPrimitiveValue::Integer3一个整数。这是JavaScript Number类型的特殊情况。JavaScript没有实际的整数字型,但ECMA-262标准包含有关如何转换Number的规则,以便为仅在整型上才有意义的某些运算符做准备,特别是位 shifting运算符。《QJSPrimitiveValue》的Integer类型表示这种转换的结果。
QJSPrimitiveValue::Double4一个JavaScript Number值。
QJSPrimitiveValue::String5一个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()

创建一个类型为Undefined的QJSPrimitiveValue。

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

创建一个具有值undefined和类型Undefined的QJSPrimitiveValue。

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

创建一个具有值null和类型Null的QJSPrimitiveValue。

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

创建一个具有值value和类型布尔值的QJSPrimitiveValue。

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

创建一个具有值value和类型整数的QJSPrimitiveValue。

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

创建一个具有值value和类型双精度浮点数的QJSPrimitiveValue。

[noexcept] QJSPrimitiveValue::QJSPrimitiveValue(QString value)

创建一个具有值value和类型字符串的QJSPrimitiveValue。

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

value的内容创建一个QJSPrimitiveValue,如果这些内容可以存储在QJSPrimtiveValue中。否则,这将导致返回一个类型为Undefined的QJSPrimitiveValue。

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

创建一个类型为type的QJSPrimitiveValue,如果type可以存储在QJSPrimtiveValue中,则使用值value进行初始化。value必须非nullptr。如果type无法存储,则返回一个类型为Undefined的QJSPrimitiveValue。

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

通常,您不需要使用此构造函数,而是使用接受QVariant的构造函数。

此函数是在Qt 6.4中引入的。

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

返回包含数据指针对应的通用void*,可以写入。

此函数是在Qt 6.6中引入的。

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

对此QJSPrimitiveValueother执行JavaScript '==' 操作,并返回结果。

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

返回存储在QJSPrimitiveValue中的值对应的QMetaType

此函数是在Qt 6.6中引入的。

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

在此QJSPrimitiveValueother上执行JavaScript '===' 操作,并返回结果。

[since 6.6] 模板 <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 String。

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

返回QJSPrimitiveValue的类型。

相关非成员

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

lhsrhs上执行JavaScript '!==' 操作,并返回结果。

此函数在Qt 6.1中引入。

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

lhsrhs上执行JavaScript '*' 操作,并返回结果。

此函数在Qt 6.1中引入。

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

lhsrhs上执行JavaScript '+' 操作,并返回结果。

此函数在Qt 6.1中引入。

[自6.1版本起] QJSPrimitiveValue operator-(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

lhsrhs执行JavaScript '-' 操作,并返回结果。

此函数在Qt 6.1中引入。

[自6.1版本起] QJSPrimitiveValue operator/(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

lhsrhs执行JavaScript '/' 操作,并返回结果。

此函数在Qt 6.1中引入。

[constexpr, 自6.1版本起] bool operator<(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

lhsrhs执行JavaScript '<' 操作,并返回结果。

此函数在Qt 6.1中引入。

[constexpr, 自6.1版本起] bool operator<=(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

lhsrhs执行JavaScript '<=' 操作,并返回结果。

此函数在Qt 6.1中引入。

[constexpr, 自6.1版本起] bool operator==(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

lhsrhs执行JavaScript '===' 操作,并返回结果。

此函数在Qt 6.1中引入。

[constexpr, 自6.1版本起] bool operator>(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

lhsrhs执行JavaScript '>' 操作,并返回结果。

此函数在Qt 6.1中引入。

[constexpr, 自6.1版本起] bool operator>=(const QJSPrimitiveValue &lhs, const QJSPrimitiveValue &rhs)

lhsrhs执行JavaScript '>=' 操作,并返回结果。

此函数在Qt 6.1中引入。

© 2024 Qt公司有限公司。本文档中的文档贡献属于其各自的所有者。所提供的文档根据自由软件基金会的GNU自由文档许可证第1.3版的条款许可。Qt及其相关标志是芬兰以及/或其他国家/地区的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。