QScriptContext Class Reference
[QtScript module]
该QScriptContext类表示一个Qt脚本函数调用。More…
Types
enum Error { UnknownError, ReferenceError, SyntaxError, TypeError, RangeError, URIError }
enum ExecutionState { NormalState, ExceptionState }
Methods
QScriptValue activationObject (self)
QScriptValue argument (self, int index)
int argumentCount (self)
QScriptValue argumentsObject (self)
QStringList backtrace (self)
QScriptValue callee (self)
QScriptEngine engine (self)
bool isCalledAsConstructor (self)
QScriptContext parentContext (self)
setActivationObject (self, QScriptValue activation)
setThisObject (self, QScriptValue thisObject)
ExecutionState state (self)
QScriptValue thisObject (self)
QScriptValue throwError (self, Error error, QString text)
QScriptValue throwError (self, QString text)
QScriptValue throwValue (self, QScriptValue value)
QString toString (self)
Detailed Description
该QScriptContext类表示一个Qt脚本函数调用。
一个QScriptContext提供了访问` this’对象和参数传递给脚本的功能。您通常希望当你写一个本机( C + +)函数来访问这些信息(见QScriptEngine.newFunction( ) )将被调用的脚本代码。例如,当脚本代码
foo(20.5, "hello", new Object())
被评估,一个QScriptContext将被创建,并在上下文将携带的参数作为QScriptValues ,在这种特殊情况下,参数将其中QScriptValue含有数20.5 ,第二QScriptValue包含字符串"hello"
以及第三QScriptValue包含一个Qt Script对象。
使用argumentCount()来获取参数传递给函数的数量,argument()来获取参数在一定的指数。该argumentsObject( )函数返回一个包含所有参数的Qt的脚本数组对象,你可以使用QScriptValueIterator遍历其元素,或者传递数组作为参数使用另一个脚本函数QScriptValue.call( ) 。
使用thisObject( )来获得与函数调用相关的this'对象,并[setThisObject]($docs-qscriptcontext.html#setThisObject)( )来设置
this’对象。如果要实现一个本地的“实例方法” ,通常取thisObject( )和访问它的一个或多个属性:
[QScriptValue]($docs-qscriptvalue.html) Person_prototype_fullName(QScriptContext *context, [QScriptEngine]($docs-qscriptengine.html) *engine)
{
[QScriptValue]($docs-qscriptvalue.html) self = context->thisObject();
[QString](qstring.html) result;
result += self.property("firstName").toString();
result += QLatin1String(" ");
result += self.property("lastName").toString();
return result;
}
使用isCalledAsConstructor()来确定函数被调用的构造函数(如"new foo()"
(作为构造函数),或者只是"foo()"
) 。当一个函数被调用的构造函数中,thisObject()中包含的功能,预计以初始化新构造的对象。
使用throwValue()或throwError( )抛出一个异常。
使用callee( ),得到QScriptValue表示被调用的函数。例如,这可以被用于递归地调用该函数。
使用parentContext( )来获得一个指向前面这种情况下在激活堆栈上下文。 (构建某种形式的回溯时,如)这是用于调试目的大多是有用的。
该activationObject( )函数返回用于保存与该函数调用关联的本地变量的对象。你可以通过调用替换激活对象setActivationObject( ) 。这些函数的典型用法是,当你想脚本代码在父上下文的语境来评价,例如:实现一个include()函数:
[QScriptValue]($docs-qscriptvalue.html) myInclude(QScriptContext *ctx, [QScriptEngine]($docs-qscriptengine.html) *eng)
{
[QString](qstring.html) fileName = ctx->argument(0).toString();
[QString](qstring.html) contents = readTheFile(fileName);
ctx->setActivationObject(ctx->parentContext()->activationObject());
ctx->setThisObject(ctx->parentContext()->thisObject());
return eng->evaluate(contents, fileName);
}
使用backtrace( )来获得与这方面有关的人类可读的回溯。这对于实现本机的功能调试时非常有用。该toString( )函数提供了上下文的字符串表示形式。 (QScriptContextInfo提供有关QScriptContext更详细的调试相关的信息。 )
使用engine()来获得一个指向QScriptEngine这方面驻留英寸
Type Documentation
QScriptContext.Error
此枚举指定类型的错误。
Constant | Value | Description |
---|---|---|
QScriptContext.ReferenceError |
1 |
参考错误。 |
QScriptContext.SyntaxError |
2 |
语法错误。 |
QScriptContext.TypeError |
3 |
A型错误。 |
QScriptContext.RangeError |
4 |
值域错误。 |
QScriptContext.URIError |
5 |
一个URI错误。 |
QScriptContext.UnknownError |
0 |
未知错误。 |
QScriptContext.ExecutionState
这个枚举指定上下文的frameution状态。
Constant | Value | Description |
---|---|---|
QScriptContext.NormalState |
0 |
上下文是在正常状态下。 |
QScriptContext.ExceptionState |
1 |
上下文是在一个特殊的状态。 |
Method Documentation
QScriptValue QScriptContext.activationObject (self)
返回此激活对象QScriptContext。激活对象提供与此内容相关联的局部变量。
Note:激活对象可能无法使用,如果没有活动QScriptEngineAgent的,因为它可能会被优化。
See also setActivationObject( )argument()和argumentsObject( ) 。
QScriptValue QScriptContext.argument (self, int index)
[
返回的函数参数在给定的index。
]($docs-qscriptvalue.html)
If index\u003e =argumentCount()的一个QScriptValue基本类型的未定义返回。
See also argumentCount( ) 。
int QScriptContext.argumentCount (self)
返回的参数传递给函数在此调用的次数。
请注意,参数计数可以从参数的正式编号(不同的length
物业callee())。
See also argument( ) 。
QScriptValue QScriptContext.argumentsObject (self)
该参数对象的属性callee
(等于callee())和length
(等于argumentCount()),和属性0
,1
,…,argumentCount( ) - 1 ,提供访问参数值。起初,物业P
( 0 \u003c=P
\u003cargumentCount( ) )具有相同的值作为参数(P
) 。在案件时P
小于的函数形式参数的数量,P
与激活对象的相应属性分享它的值(activationObject())。这意味着,更改此属性将更改激活对象的相应属性,反之亦然。
See also argument()和activationObject( ) 。
QStringList QScriptContext.backtrace (self)
返回此人类可读的回溯QScriptContext。
每一行的形式为<function-name>(<arguments>)@<file-name>:<line-number>
。
要访问各个部分的调试相关的信息(例如,构造自己的回溯表示) ,使用QScriptContextInfo。
See also QScriptEngine.uncaughtExceptionBacktrace( )QScriptContextInfo和toString( ) 。
QScriptValue QScriptContext.callee (self)
返回被调用。被调用的是函数对象,这QScriptContext代表的调用。
QScriptEngine QScriptContext.engine (self)
返回QScriptEngine这QScriptContext属于。
bool QScriptContext.isCalledAsConstructor (self)
返回True如果函数被调用的构造函数(如"new foo()"
),否则返回False 。
当一个函数被调用的构造函数中,thisObject()包含要初始化的新构造的对象。
Note:此功能只保证工作对应于原生函数的上下文。
QScriptContext QScriptContext.parentContext (self)
QScriptContext.setActivationObject (self, QScriptValue activation)
设置这个激活对象QScriptContext为给定的activation。
If activation不是一个对象,这个函数不执行任何操作。
Note:为对应的JavaScript函数的上下文,这是只保证工作,如果有一个QScriptEngineAgent活性在发动机上,而功能进行评价。
See also activationObject( ) 。
QScriptContext.setThisObject (self, QScriptValue thisObject)
设置了` this’对象与此相关QScriptContext要thisObject。
If thisObject不是一个对象,这个函数不执行任何操作。
See also thisObject( ) 。
ExecutionState QScriptContext.state (self)
返回此的frameution状态QScriptContext。
QScriptValue QScriptContext.thisObject (self)
返回与此相关联的` this’对象QScriptContext。
See also setThisObject( ) 。
QScriptValue QScriptContext.throwError (self, Error error, QString text)
[
抛出一个error用给定的text。返回创建的错误对象。
该text将被存储在message
错误对象的属性。
]($docs-qscriptvalue.html)
Error对象将被初始化为包含有关发生错误的位置信息;具体而言,它将拥有属性lineNumber
,fileName
和stack
。这些属性中描述QtScript Extensions to ECMAScript。
See also throwValue()和state( ) 。
QScriptValue QScriptContext.throwError (self, QString text)
[
这是一个重载函数。
与给定抛出一个错误text。返回创建的错误对象。
]($docs-qscriptvalue.html)
See also throwValue()和state( ) 。
QScriptValue QScriptContext.throwValue (self, QScriptValue value)
[
用给定的抛出一个异常value。返回抛出(相同的参数)的值。
]($docs-qscriptvalue.html)
See also throwError()和state( ) 。
QString QScriptContext.toString (self)
返回此上下文的字符串表示形式。这对于调试非常有用。
此功能被引入Qt的4.4 。
See also backtrace( ) 。