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( ) )将被调用的脚本代码。例如,当脚本代码

  1. 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( )和访问它的一个或多个属性:

  1. [QScriptValue]($docs-qscriptvalue.html) Person_prototype_fullName(QScriptContext *context, [QScriptEngine]($docs-qscriptengine.html) *engine)
  2. {
  3. [QScriptValue]($docs-qscriptvalue.html) self = context->thisObject();
  4. [QString](qstring.html) result;
  5. result += self.property("firstName").toString();
  6. result += QLatin1String(" ");
  7. result += self.property("lastName").toString();
  8. return result;
  9. }

使用isCalledAsConstructor()来确定函数被调用的构造函数(如"new foo()"(作为构造函数),或者只是"foo()") 。当一个函数被调用的构造函数中,thisObject()中包含的功能,预计以初始化新构造的对象。

使用throwValue()或throwError( )抛出一个异常。

使用callee( ),得到QScriptValue表示被调用的函数。例如,这可以被用于递归地调用该函数。

使用parentContext( )来获得一个指向前面这种情况下在激活堆栈上下文。 (构建某种形式的回溯时,如)这是用于调试目的大多是有用的。

activationObject( )函数返回用于保存与该函数调用关联的本地变量的对象。你可以通过调用替换激活对象setActivationObject( ) 。这些函数的典型用法是,当你想脚本代码在父上下文的语境来评价,例如:实现一个include()函数:

  1. [QScriptValue]($docs-qscriptvalue.html) myInclude(QScriptContext *ctx, [QScriptEngine]($docs-qscriptengine.html) *eng)
  2. {
  3. [QString](qstring.html) fileName = ctx->argument(0).toString();
  4. [QString](qstring.html) contents = readTheFile(fileName);
  5. ctx->setActivationObject(ctx->parentContext()->activationObject());
  6. ctx->setThisObject(ctx->parentContext()->thisObject());
  7. return eng->evaluate(contents, fileName);
  8. }

使用backtrace( )来获得与这方面有关的人类可读的回溯。这对于实现本机的功能调试时非常有用。该toString( )函数提供了上下文的字符串表示形式。 (QScriptContextInfo提供有关QScriptContext更详细的调试相关的信息。 )

使用engine()来获得一个指向QScriptEngine这方面驻留英寸


Type Documentation

  1. 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 未知错误。
  1. QScriptContext.ExecutionState

这个枚举指定上下文的frameution状态。

Constant Value Description
QScriptContext.NormalState 0 上下文是在正常状态下。
QScriptContext.ExceptionState 1 上下文是在一个特殊的状态。

Method Documentation

  1. QScriptValue QScriptContext.activationObject (self)

返回此激活对象QScriptContext。激活对象提供与此内容相关联的局部变量。

Note:激活对象可能无法使用,如果没有活动QScriptEngineAgent的,因为它可能会被优化。

See also setActivationObject( )argument()和argumentsObject( ) 。

  1. QScriptValue QScriptContext.argument (self, int index)

[

返回的函数参数在给定的index

]($docs-qscriptvalue.html)

If index\u003e =argumentCount()的一个QScriptValue基本类型的未定义返回。

See also argumentCount( ) 。

  1. int QScriptContext.argumentCount (self)

返回的参数传递给函数在此调用的次数。

请注意,参数计数可以从参数的正式编号(不同的length物业callee())。

See also argument( ) 。

  1. QScriptValue QScriptContext.argumentsObject (self)

返回此参数对象QScriptContext

该参数对象的属性callee(等于callee())和length(等于argumentCount()),和属性01,…,argumentCount( ) - 1 ,提供访问参数值。起初,物业P( 0 \u003c=P\u003cargumentCount( ) )具有相同的值作为参数(P) 。在案件时P小于的函数形式参数的数量,P与激活对象的相应属性分享它的值(activationObject())。这意味着,更改此属性将更改激活对象的相应属性,反之亦然。

See also argument()和activationObject( ) 。

  1. QStringList QScriptContext.backtrace (self)

返回此人类可读的回溯QScriptContext

每一行的形式为<function-name>(<arguments>)@<file-name>:<line-number>

要访问各个部分的调试相关的信息(例如,构造自己的回溯表示) ,使用QScriptContextInfo

See also QScriptEngine.uncaughtExceptionBacktrace( )QScriptContextInfotoString( ) 。

  1. QScriptValue QScriptContext.callee (self)

返回被调用。被调用的是函数对象,这QScriptContext代表的调用。

  1. QScriptEngine QScriptContext.engine (self)

返回QScriptEngineQScriptContext属于。

  1. bool QScriptContext.isCalledAsConstructor (self)

返回True如果函数被调用的构造函数(如"new foo()"),否则返回False 。

当一个函数被调用的构造函数中,thisObject()包含要初始化的新构造的对象。

Note:此功能只保证工作对应于原生函数的上下文。

  1. QScriptContext QScriptContext.parentContext (self)

返回此父上下文QScriptContext

  1. QScriptContext.setActivationObject (self, QScriptValue activation)

设置这个激活对象QScriptContext为给定的activation

If activation不是一个对象,这个函数不执行任何操作。

Note:为对应的JavaScript函数的上下文,这是只保证工作,如果有一个QScriptEngineAgent活性在发动机上,而功能进行评价。

See also activationObject( ) 。

  1. QScriptContext.setThisObject (self, QScriptValue thisObject)

设置了` this’对象与此相关QScriptContextthisObject

If thisObject不是一个对象,这个函数不执行任何操作。

See also thisObject( ) 。

  1. ExecutionState QScriptContext.state (self)

返回此的frameution状态QScriptContext

  1. QScriptValue QScriptContext.thisObject (self)

返回与此相关联的` this’对象QScriptContext

See also setThisObject( ) 。

  1. QScriptValue QScriptContext.throwError (self, Error error, QString text)

[

抛出一个error用给定的text。返回创建的错误对象。

text将被存储在message错误对象的属性。

]($docs-qscriptvalue.html)

Error对象将被初始化为包含有关发生错误的位置信息;具体而言,它将拥有属性lineNumberfileNamestack。这些属性中描述QtScript Extensions to ECMAScript

See also throwValue()和state( ) 。

  1. QScriptValue QScriptContext.throwError (self, QString text)

[

这是一个重载函数。

与给定抛出一个错误text。返回创建的错误对象。

]($docs-qscriptvalue.html)

See also throwValue()和state( ) 。

  1. QScriptValue QScriptContext.throwValue (self, QScriptValue value)

[

用给定的抛出一个异常value。返回抛出(相同的参数)的值。

]($docs-qscriptvalue.html)

See also throwError()和state( ) 。

  1. QString QScriptContext.toString (self)

返回此上下文的字符串表示形式。这对于调试非常有用。

此功能被引入Qt的4.4 。

See also backtrace( ) 。