PySide6.QtQml.QJSManagedValue¶
- class QJSManagedValue¶
QJSManagedValuerepresents a value on the JavaScript heap belonging to aQJSEngine. More…Synopsis¶
Methods¶
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()
Note
This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE
Detailed Description¶
The
QJSManagedValueclass allows interaction with JavaScript values in most ways you can interact with them from JavaScript itself. You can get and set properties and prototypes, and you can access arrays. Additionally, you can transform the value into the Qt counterparts of JavaScript objects. For example, a Url object may be transformed into a QUrl.A
QJSManagedValueis always bound to a particularQJSEngine. You cannot use it independently. This means that you cannot have aQJSManagedValuefrom one engine be a property or a proptotype of aQJSManagedValuefrom a different engine.In contrast to
QJSValue, almost all values held byQJSManagedValuelive on the JavaScript heap. There is no inline or unmanaged storage. Therefore, you can get the prototype of a primitive value, and you can get thelengthproperty of a string.Only default-constructed or moved-from QJSManagedValues do not hold a value on the JavaScript heap. They represent
undefined, which doesn’t have any properties or prototypes.Also in contrast to
QJSValue,QJSManagedValuedoes not catch any JavaScript exceptions. If an operation on aQJSManagedValuecauses an error, it will generally return anundefinedvalue andhasError()will returntrueafterwards. You can then catch the exception usingcatchError(), or pass it up the stack, at your own discretion.Note
As the reference to the value on the JavaScript heap has to be freed on destruction, you cannot move a
QJSManagedValueto a different thread. The destruction would take place in the new thread, which would create a race condition with the garbage collector on the original thread. This also means that you cannot hold aQJSManagedValuebeyond the lifespan of its engine.The recommended way of working with a
QJSManagedValueis creating it on the stack, possibly by moving aQJSValueand adding an engine, then performing the necessary operations on it, and finally moving it back into aQJSValuefor storage. Moving betweenQJSManagedValueandQJSValueis fast.- class Type¶
This enum represents the JavaScript native types, as specified by ECMA-262 .
Constant
Description
QJSManagedValue.Type.Undefined
The
undefinedtypeQJSManagedValue.Type.Boolean
The
booleantypeQJSManagedValue.Type.Number
The
numbertypeQJSManagedValue.Type.String
The
stringtypeQJSManagedValue.Type.Object
The
objecttypeQJSManagedValue.Type.Symbol
The
symboltypeQJSManagedValue.Type.Function
The
functiontypeNote that the
nullvalue is not a type of itself but rather a special kind of object. You can query aQJSManagedValuefor this condition using theisNull()method. Furthermore, JavaScript has no integer type, but it knows a special treatment of numbers in preparation for integer only operations. You can query aQJSManagedValueto find out whether it holds the result of such a treatment by using theisInteger()method.
- __init__()¶
Creates a
QJSManagedValuethat represents the JavaScriptundefinedvalue. This is the only value not stored on the JavaScript heap. Callingengine()on a default-constructedQJSManagedValuewill return nullptr.Creates a
QJSManagedValuefromvalue, using the heap ofengine. Ifvalueis itself managed and the engine it belongs to is notengine, the result is anundefinedvalue, and a warning is generated.- __init__(value, engine)
- Parameters:
value –
QJSPrimitiveValueengine –
QJSEngine
Creates a
QJSManagedValuefromvalueusing the heap ofengine.- __init__(string, engine)
- Parameters:
string – str
engine –
QJSEngine
Creates a
QJSManagedValuefromstringusing the heap ofengine.- __init__(variant, engine)
- Parameters:
variant – object
engine –
QJSEngine
Creates a
QJSManagedValuefromvariantusing the heap ofengine.If this
QJSManagedValuerepresents a JavaScript FunctionObject, calls it with the givenarguments, and returns the result. Otherwise returns a JavaScriptundefinedvalue.The
argumentshave to be either primitive values or belong to the sameQJSEngineas thisQJSManagedValue. Otherwise the call is not carried out and a JavaScriptundefinedvalue is returned.If this
QJSManagedValuerepresents a JavaScript FunctionObject, calls it as constructor with the givenarguments, and returns the result. Otherwise returns a JavaScriptundefinedvalue.The
argumentshave to be either primitive values or belong to the sameQJSEngineas thisQJSManagedValue. Otherwise the call is not carried out and a JavaScriptundefinedvalue is returned.- callWithInstance(instance[, arguments={}])¶
If this
QJSManagedValuerepresents a JavaScript FunctionObject, calls it oninstancewith the givenarguments, and returns the result. Otherwise returns a JavaScriptundefinedvalue.The
argumentsand theinstancehave to be either primitive values or belong to the sameQJSEngineas thisQJSManagedValue. Otherwise the call is not carried out and a JavaScriptundefinedvalue is returned.- deleteProperty(name)¶
- Parameters:
name – str
- Return type:
bool
Deletes the property
namefrom thisQJSManagedValue. Returnstrueif the deletion succeeded, orfalseotherwise.- deleteProperty(arrayIndex)
- Parameters:
arrayIndex – int
- Return type:
bool
Deletes the value stored at
arrayIndexfrom thisQJSManagedValue. Returnstrueif the deletion succeeded, orfalseotherwise.Returns the
QJSEnginethisQJSManagedValuebelongs to. Mind that the engine is always valid, unless theQJSManagedValueis default-constructed or moved from. In the latter case a nullptr is returned.- equals(other)¶
- Parameters:
other –
QJSManagedValue- Return type:
bool
Invokes the JavaScript ‘==’ operator on this
QJSManagedValueandother, and returns the result.See also
- hasOwnProperty(name)¶
- Parameters:
name – str
- Return type:
bool
Returns
trueif thisQJSManagedValuehas a propertyname, otherwise returnsfalse. The properties of the prototype chain are not considered.- hasOwnProperty(arrayIndex)
- Parameters:
arrayIndex – int
- Return type:
bool
Returns
trueif thisQJSManagedValuehas an array indexarrayIndex, otherwise returnsfalse. The properties of the prototype chain are not considered.- hasProperty(name)¶
- Parameters:
name – str
- Return type:
bool
Returns
trueif thisQJSManagedValuehas a propertyname, otherwise returnsfalse. The properties of the prototype chain are considered.- hasProperty(arrayIndex)
- Parameters:
arrayIndex – int
- Return type:
bool
Returns
trueif thisQJSManagedValuehas an array indexarrayIndex, otherwise returnsfalse. The properties of the prototype chain are considered.- isArray()¶
- Return type:
bool
Returns
trueif this value represents a JavaScript Array object, orfalseotherwise.- isBoolean()¶
- Return type:
bool
Returns
trueif the type of thisQJSManagedValueisboolean, orfalseotherwise.- isDate()¶
- Return type:
bool
Returns
trueif this value represents a JavaScript Date object, orfalseotherwise.- isError()¶
- Return type:
bool
Returns
trueif this value represents a JavaScript Error object, orfalseotherwise.- isFunction()¶
- Return type:
bool
Returns
trueif the type of thisQJSManagedValueisfunction,falseotherwise.- isInteger()¶
- Return type:
bool
Returns
trueif thisQJSManagedValueholds an integer value, orfalseotherwise. The storage format of a number does not affect the result of any operations performed on it, but if an integer is stored, many operations are faster.- isJsMetaType()¶
- Return type:
bool
- isNull()¶
- Return type:
bool
Returns
trueif thisQJSManagedValueholds the JavaScriptnullvalue, orfalseotherwise.- isNumber()¶
- Return type:
bool
Returns
trueif the type of thisQJSManagedValueisnumber, orfalseotherwise.- isObject()¶
- Return type:
bool
Returns
trueif the type of thisQJSManagedValueisobject, orfalseotherwise.- isQMetaObject()¶
- Return type:
bool
Returns
trueif this value represents a QMetaObject pointer managed on the JavaScript heap, orfalseotherwise.- isQObject()¶
- Return type:
bool
Returns
trueif this value represents a QObject pointer managed on the JavaScript heap, orfalseotherwise.- isRegularExpression()¶
- Return type:
bool
Returns
trueif this value represents a JavaScript regular expression object, orfalseotherwise.- isString()¶
- Return type:
bool
Returns
trueif the type of thisQJSManagedValueisstring, orfalseotherwise.- isSymbol()¶
- Return type:
bool
Returns
trueif the type of thisQJSManagedValueissymbol, orfalseotherwise.- isUndefined()¶
- Return type:
bool
Returns
trueif the type of thisQJSManagedValueisundefined, orfalseotherwise.- isUrl()¶
- Return type:
bool
Returns
trueif this value represents a JavaScript Url object, orfalseotherwise.- isVariant()¶
- Return type:
bool
Returns
trueif this value represents a QVariant managed on the JavaScript heap, orfalseotherwise.- jsMetaInstantiate([values={}])¶
- Parameters:
values – .list of QJSValue
- Return type:
- jsMetaMembers()¶
- Return type:
list of strings
- jsMetaType()¶
- Return type:
Returns the property
nameof thisQJSManagedValue. The prototype chain is searched if the property is not found on the actual object.See also
- property(arrayIndex)
- Parameters:
arrayIndex – int
- Return type:
Returns the property stored at
arrayIndexof thisQJSManagedValue. The prototype chain is searched if the property is not found on the actual object.- prototype()¶
- Return type:
Returns the prototype for this
QJSManagedValue. This works on any value. You can, for example retrieve the JavaScriptbooleanprototype from abooleanvalue.See also
Sets the property
nametovalueon thisQJSManagedValue. This can only be done on JavaScript values of typeobject. Furhermore,valuehas to be either a primitive or belong to the same engine as this value.See also
- setProperty(arrayIndex, value)
- Parameters:
arrayIndex – int
value –
QJSValue
Stores the
valueatarrayIndexin thisQJSManagedValue. This can only be done on JavaScript values of typeobject, and it’s not recommended if the value is not an array. Furhermore,valuehas to be either a primitive or belong to the same engine as this value.- setPrototype(prototype)¶
- Parameters:
prototype –
QJSManagedValue
Sets the prototype of this
QJSManagedValuetoprototype. A precondition is thatprototypebelongs to the sameQJSEngineas thisQJSManagedValueand is an object (including null). Furthermore, thisQJSManagedValuehas to be an object (excluding null), too, and you cannot create prototype cycles.See also
- strictlyEquals(other)¶
- Parameters:
other –
QJSManagedValue- Return type:
bool
Invokes the JavaScript ‘===’ operator on this
QJSManagedValueandother, and returns the result.See also
- toBoolean()¶
- Return type:
bool
Converts the manged value to a boolean. If the managed value holds a boolean, that one is returned. Otherwise a boolean coercion by JavaScript rules is performed.
If this
QJSManagedValueholds a JavaScript Date object, returns an equivalent QDateTime. Otherwise returns an invalid one.- toInteger()¶
- Return type:
int
Converts the manged value to an integer. This first converts the value to a number by the rules of
toNumber(), and then clamps it into the integer range by the rules given for coercing the arguments to JavaScript bit shift operators into 32bit integers.Internally, the value may already be stored as an integer, in which case a fast path is taken.
Note
Conversion of a managed value to a number can throw an exception. In particular, symbols cannot be coerced into numbers, or a custom valueOf() method may throw. In this case the result is 0 and the engine carries an error after the conversion.
Note
The JavaScript rules for coercing numbers into 32bit integers are unintuitive.
Copies this
QJSManagedValueinto a newQJSValue. This is less efficient than move-constructing aQJSValuefrom aQJSManagedValue, but retains theQJSManagedValue.- toNumber()¶
- Return type:
float
Converts the manged value to a number. If the managed value holds a number, that one is returned. Otherwise a number coercion by JavaScript rules is performed.
Note
Conversion of a managed value to a number can throw an exception. In particular, symbols cannot be coerced into numbers, or a custom valueOf() method may throw. In this case the result is 0 and the engine carries an error after the conversion.
- toPrimitive()¶
- Return type:
Converts the manged value to a
QJSPrimitiveValue. If the managed value holds a type supported byQJSPrimitiveValue, the value is copied. Otherwise the value is converted to a string, and the string is stored inQJSPrimitiveValue.Note
Conversion of a managed value to a string can throw an exception. In particular, symbols cannot be coerced into strings, or a custom
toString()method may throw. In this case the result is the undefined value and the engine carries an error after the conversion.- toQMetaObject()¶
- Return type:
If this
QJSManagedValueholds a QMetaObject pointer, returns it. Otherwise returns nullptr.If this
QJSManagedValueholds a QObject pointer, returns it. Otherwise returns nullptr.- toRegularExpression()¶
- Return type:
If this
QJSManagedValueholds a JavaScript regular expression object, returns an equivalent QRegularExpression. Otherwise returns an invalid one.- toString()¶
- Return type:
str
Converts the manged value to a string. If the managed value holds a string, that one is returned. Otherwise a string coercion by JavaScript rules is performed.
Note
Conversion of a managed value to a string can throw an exception. In particular, symbols cannot be coerced into strings, or a custom toString() method may throw. In this case the result is an empty string and the engine carries an error after the conversion.
If this
QJSManagedValueholds a JavaScript Url object, returns an equivalent QUrl. Otherwise returns an invalid one.- toVariant()¶
- Return type:
object
Copies this
QJSManagedValueinto a new QVariant. This also creates a useful QVariant ifisVariant()returns false. QVariant can hold all types supported byQJSManagedValue.Returns the JavaScript type of this
QJSManagedValue.