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