- class QJSManagedValue#
QJSManagedValue
表示属于QJSEngine
的JavaScript堆上的一个值。更多信息...概述#
方法#
def
__init__()
def
call()
定义
engine()
定义
equals()
定义
isArray()
定义
isBoolean()
定义
isDate()
定义
isError()
定义
isFunction()
定义
isInteger()
定义
isNull()
定义
isNumber()
定义
isObject()
定义
isQObject()
定义
isString()
定义
isSymbol()
定义
isUrl()
定义
isVariant()
定义
jsMetaType()
定义
property()
定义
prototype()
定义
toBoolean()
定义
toDateTime()
定义
toInteger()
定义
toJSValue()
定义
toNumber()
定义
toQObject()
定义
toString()
定义
toUrl()
定义
toVariant()
定义
type()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译存在问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单的方式告诉我们。
详细描述#
(
QJSManagedValue
)类允许以大多数从JavaScript本身进行交互的方式与JavaScript值进行交互。您可以获取和设置属性和原型,并且可以访问数组。此外,您可以将该值转换为JavaScript对象的Qt对应项。例如,一个Url对象可能被转换为QUrl。(
QJSManagedValue
)总是绑定到一个特定的QJSEngine
。您不能独立使用它。这意味着您不能将一个引擎的(QJSManagedValue
)用作另一个引擎的属性或原型。与(
QJSValue
)相比,大部分由(QJSManagedValue
)持有的值都存在于JavaScript堆上。没有内联或非管理存储。因此,您可以为原始值获取原型,并且可以获取字符串的长度属性。只有默认构造或移动构造的QJSManagedValues不持有JavaScript堆上的值。它们表示
undefined
,它没有任何属性或原型。与(
QJSValue
)不同,(QJSManagedValue
)也不捕获任何JavaScript异常。如果对(QJSManagedValue
)上的操作导致错误,它通常会返回一个(undefined
)值,并且之后(hasError()
)将返回(true
)。然后您可以使用(catchError()
)捕获异常,或者根据您的意愿将其传递到堆栈中。注意
由于JavaScript堆上值的引用必须在销毁时释放,因此您不能将(
QJSManagedValue
)移动到不同的线程。销毁将在新线程中进行,这将与原始线程上的垃圾收集器创建竞争条件。这也意味着您不能将超出其引擎生命周期的(QJSManagedValue
)保留下来。推荐使用
QJSManagedValue
的方法是将其在栈上创建,可能通过移动一个QJSValue
并添加一个引擎,然后在该QJSValue
上执行必要的操作,最后将其放回一个用于存储的QJSValue
中。在QJSManagedValue
和QJSValue
之间的转换速度快。- class 类型#
此枚举表示JavaScript原生类型,如ECMA-262所规定的。
常量
描述
QJSManagedValue.Undefined
类型为
undefined
QJSManagedValue.Boolean
类型为
boolean
QJSManagedValue.Number
类型为
number
QJSManagedValue.String
类型为
string
QJSManagedValue.Object
类型为
object
QJSManagedValue.Symbol
类型为
symbol
QJSManagedValue.Function
类型为
function
请注意,
null
不是一个类型,而是一种特殊的对象。您可以使用QJSManagedValue
的isNull()
方法查询此条件。此外,JavaScript没有整数类型,但是它以特殊的方式处理数字以准备整数只操作。您可以使用QJSManagedValue
的isInteger()
方法来确定它是否包含此类处理的结果。
从
value
创建一个QJSManagedValue
,使用engine
的堆空间。如果value
本身由引擎管理并且所属的引擎不是engine
,则结果为undefined
值,并生成警告。- __init__()
创建一个表示 JavaScript
undefined
值的QJSManagedValue
,这是唯一没有存储在 JavaScript 堆上的值。在默认构造的QJSManagedValue
上调用engine()
将返回 nullptr。- __init__(variant, engine)
- 参数:
variant – 对象
engine –
QJSEngine
从
variant
创建一个使用engine
堆空间的QJSManagedValue
。- __init__(value, engine)
- 参数:
value –
QJSPrimitiveValue
engine –
QJSEngine
从
value
创建一个使用engine
堆空间的QJSManagedValue
。- __init__(string, engine)
- 参数:
string – str
engine –
QJSEngine
从
string
创建一个使用engine
堆空间的QJSManagedValue
。如果这个
QJSManagedValue
表示一个 JavaScript FunctionObject,则使用给定的arguments
调用它,并返回结果。否则返回一个 JavaScriptundefined
值。参数必须是基本值或者属于与这个
QJSEngine
相同的外部等方面。《a class="reference internal" href="#PySide6.QtQml.QJSManagedValue" title="PySide6.QtQml.QJSManagedValue">QJSManagedValue
。 否则调用将不会被执行,并且返回 JavaScript 的undefined
值。如果这个
QJSManagedValue
表示一个 JavaScript 函数对象,那么使用给定的arguments
作为构造函数调用它,并返回结果。否则返回 JavaScript 的undefined
值。参数必须是基本值或者属于与这个
QJSEngine
相同的外部等方面。《a class="reference internal" href="#PySide6.QtQml.QJSManagedValue" title="PySide6.QtQml.QJSManagedValue">QJSManagedValue
。 否则调用将不会被执行,并且返回 JavaScript 的undefined
值。- callWithInstance(instance[, arguments={}])#
如果这个
QJSManagedValue
表示一个 JavaScript 函数对象,那么在instance
上使用给定的arguments
进行调用,并返回结果。否则返回 JavaScript 的undefined
值。arguments
和instance
必须是基本类型或者属于与这个QJSEngine
相同的外部等方面。QJSManagedValue
。 否则调用将不会被执行,并且返回 JavaScript 的undefined
值。- deleteProperty(name)#
- 参数:
name – str
- 返回类型:
bool
从本
QJSManagedValue
中删除一个name
属性。如果删除成功则返回true
,否则返回false
。- deleteProperty(arrayIndex)
- 参数:
arrayIndex – int
- 返回类型:
bool
从当前
QJSManagedValue
中删除存储在arrayIndex
的值。如果删除成功,则返回true
,否则返回false
。返回此
QJSManagedValue
所属的QJSEngine
。请注意,只要QJSManagedValue
不是默认构造或移动,引擎始终有效。在后一种情况下,返回 nullptr。- equals(other)#
- 参数:
other –
QJSManagedValue
- 返回类型:
bool
在此
QJSManagedValue
和other
上调用 JavaScript 的 ‘==’ 操作符,并返回结果。另请参阅
- hasOwnProperty(name)#
- 参数:
name – str
- 返回类型:
bool
如果此
QJSManagedValue
有一个名为name
的属性,则返回true
,否则返回false
。不考虑原型链上的属性。- hasOwnProperty(arrayIndex)
- 参数:
arrayIndex – int
- 返回类型:
bool
如果此
QJSManagedValue
有一个索引为arrayIndex
的数组,则返回true
,否则返回false
。不考虑原型链上的属性。- hasProperty(name)#
- 参数:
name – str
- 返回类型:
bool
如果此
QJSManagedValue
有一个名为name
的属性,则返回true
,否则返回false
。考虑原型链上的属性。- hasProperty(arrayIndex)
- 参数:
arrayIndex – int
- 返回类型:
bool
如果此
QJSManagedValue
对象具有数组索引arrayIndex
,则返回true
,否则返回false
。会考虑原型链上的属性。- isArray()#
- 返回类型:
bool
如果此值代表 JavaScript 数组对象,则返回
true
,否则返回false
。- isBoolean()#
- 返回类型:
bool
如果此
QJSManagedValue
对象的类型是boolean
,则返回true
,否则返回false
。- isDate()#
- 返回类型:
bool
如果此值代表 JavaScript 日期对象,则返回
true
,否则返回false
。- isError()#
- 返回类型:
bool
如果此值代表 JavaScript 错误对象,则返回
true
,否则返回false
。- isFunction()#
- 返回类型:
bool
如果此
QJSManagedValue
对象的类型是function
,则返回true
,否则返回false
。- isInteger()#
- 返回类型:
bool
如果此
QJSManagedValue
对象包含整数值,则返回true
,否则返回false
。数字的存储格式不会影响对其进行的任何操作的结果,但如果存储了整数,则许多操作会更快。- isJsMetaType()#
- 返回类型:
bool
- isNull()#
- 返回类型:
bool
如果此
QJSManagedValue
对象包含 JavaScript 的null
值,则返回true
,否则返回false
。- isNumber()#
- 返回类型:
bool
如果此
QJSManagedValue
的类型是number
,则返回true
,否则返回false
。- isObject()#
- 返回类型:
bool
如果此
QJSManagedValue
的类型是object
,则返回true
,否则返回false
。- isQMetaObject()#
- 返回类型:
bool
如果此值表示在 JavaScript 堆上管理的 QMetaObject 指针,则返回
true
,否则返回false
。- isQObject()#
- 返回类型:
bool
如果此值表示在 JavaScript 堆上管理的 QObject 指针,则返回
true
,否则返回false
。- isRegularExpression()#
- 返回类型:
bool
如果此值表示 JavaScript 正则表达式对象,则返回
true
,否则返回false
。- isString()#
- 返回类型:
bool
如果此
QJSManagedValue
的类型是string
,则返回true
,否则返回false
。- isSymbol()#
- 返回类型:
bool
如果此
QJSManagedValue
的类型是symbol
,则返回true
,否则返回false
。- isUndefined()#
- 返回类型:
bool
如果此
QJSManagedValue
的类型是undefined
,则返回true
,否则返回false
。- isUrl()#
- 返回类型:
bool
如果此值代表 JavaScript Url 对象,则返回
true
,否则返回false
。- isVariant()#
- 返回类型:
bool
如果此值代表 JavaScript 堆上管理的 QVariant,则返回
true
,否则返回false
。- jsMetaInstantiate([values={}])#
- 参数:
values - .QJSValue 的列表
- 返回类型:
- jsMetaMembers()#
- 返回类型:
字符串列表
- jsMetaType()#
- 返回类型:
返回此
QJSManagedValue
的属性name
。如果该属性不在实际对象上找到,则在原型链中搜索。另请参阅
- property(arrayIndex)
- 参数:
arrayIndex – int
- 返回类型:
返回此
QJSManagedValue
中存储在arrayIndex
的属性。如果该属性在实际对象上找不到,则在原型链中搜索。- prototype()#
- 返回类型:
返回此
QJSManagedValue
的原型。这适用于任何值。例如,可以从布尔值中检索 JavaScript 的boolean
原型。另请参阅
将此
QJSManagedValue
上的属性name
设置为value
。这只可以在类型为object
的 JavaScript 值上执行。此外,value
必须是原始值或属于与此值相同的引擎。另请参阅
- setProperty(arrayIndex, value)
- 参数:
arrayIndex – int
value –
QJSValue
在此
QJSManagedValue
中存储value
于arrayIndex
。这只能对类型的JavaScript值object
进行,并且如果该值不是数组,则不建议这样做。此外,value
必须是原始数据类型或属于与该值相同的引擎。- setPrototype(prototype)#
- 参数:
prototype –
QJSManagedValue
设置此
QJSManagedValue
的原型为prototype
。先决条件是prototype
属于与该QJSManagedValue
相同的QJSEngine
,并且是对象(包括null)。此外,此QJSManagedValue
还必须是对象(不包括null),且不能创建原型循环。另请参阅
- strictlyEquals(other)#
- 参数:
other –
QJSManagedValue
- 返回类型:
bool
在此
QJSManagedValue
和other
上调用JavaScript的‘===’运算符,并返回结果。另请参阅
- toBoolean()#
- 返回类型:
bool
将管理的值转换为布尔值。如果管理值为布尔值,则返回该值。否则,根据JavaScript规则进行布尔类型转换。
如果此
QJSManagedValue
包含JavaScript Date对象,则返回等价的QDateTime。否则返回一个无效的QDateTime。- toInteger()#
- 返回类型:
int
将管理的值转换为整数。首先根据
toNumber()
方法的规则将值转换为数字,然后根据将JavaScript位运算符参数强制转换为32位整数的规则将其压缩到整数范围内。在内部,值可能已经存储为整数,这种情况下会采取快速路径。
注意
将托管值转换为数字可能会抛出异常。特别是,符号不能被强制转换为数字,或者自定义valueOf()方法可能抛出异常。在这种情况下,结果为0,引擎在转换后会携带错误。
注意
将数字强制转换为32位整数的JavaScript规则并不直观。
将此
QJSManagedValue
复制到一个新的QJSValue
。这比从QJSManagedValue
构造QJSValue
更低效,但保留了QJSManagedValue
的内容。- toNumber()#
- 返回类型:
浮点数
将托管值转换为数字。如果托管值包含一个数字,则返回该数字。否则,将按照JavaScript规则执行数字强制转换。
注意
将托管值转换为数字可能会抛出异常。特别是,符号不能被强制转换为数字,或者自定义valueOf()方法可能抛出异常。在这种情况下,结果为0,引擎在转换后会携带错误。
- toPrimitive()#
- 返回类型:
将托管值转换为
QJSPrimitiveValue
。如果托管值包含由QJSPrimitiveValue
支持的类型,则复制该值。否则,将值转换为字符串,并将该字符串存储在QJSPrimitiveValue
中。注意
将托管值转换为字符串可能会抛出异常。特别是,符号不能被强制转换为字符串,或者自定义
toString()
方法可能抛出异常。在这种情况下,结果为未定义值,引擎在转换后会携带错误。- toQMetaObject()#
- 返回类型:
如果此
QJSManagedValue
包含一个QMetaObject指针,则返回它。否则返回nullptr。如果此
QJSManagedValue
包含一个QObject指针,则返回它。否则返回nullptr。- toRegularExpression()#
- 返回类型:
如果这个
QJSManagedValue
包含一个JavaScript正则表达式对象,则返回一个等效的QRegularExpression。否则返回一个无效的实例。- toString()#
- 返回类型:
str
将管理值转换为字符串。如果管理值包含一个字符串,则返回该字符串。否则按照JavaScript规则执行字符串强制转换。
注意
将管理值转换为字符串可能会抛出异常。特别是,符号不能转换为字符串,或者自定义的toString()方法可能会抛出异常。在这种情况下,结果为空字符串,并且转换器在转换后带有错误。
如果这个
QJSManagedValue
包含一个JavaScript URL对象,则返回一个等效的QUrl。否则返回一个无效的实例。- toVariant()#
- 返回类型:
object
将此
QJSManagedValue
复制到一个新的QVariant中。如果isVariant()
返回false,这也将创建一个有用的QVariant。QVariant可以持有QJSManagedValue支持的所有类型的值。返回此
QJSManagedValue
的JavaScript类型。