/*! Creates a new \c{Object} and calls this QScriptValue as a constructor, using the created object as the `this' object and passing \a arguments as arguments. If the return value from the constructor call is an object, then that object is returned; otherwise the default constructed object is returned. If this QScriptValue is not a function, construct() does nothing and returns an invalid QScriptValue. \a arguments can be an arguments object, an array, null or undefined. Any other type will cause a TypeError to be thrown. \sa call(), QScriptEngine::newObject(), QScriptContext::argumentsObject() */ QScriptValue QScriptValue::construct(const QScriptValue &arguments) { Q_D(QScriptValue); if (!d || !d->value.isObject()) return QScriptValue(); QScriptEnginePrivate *eng = QScriptEnginePrivate::get(engine()); return eng->toPublic(d->value.construct(eng->toImpl(arguments))); }
/*! \since 4.4 Sets the internal \a data of this QScriptValue object. You can use this function to set object-specific data that won't be directly accessible to scripts, but may be retrieved in C++ using the data() function. */ void QScriptValue::setData(const QScriptValue &data) { Q_D(QScriptValue); if (!d || !d->value.isObject()) return; QScriptEnginePrivate *eng = QScriptEnginePrivate::get(engine()); d->value.setInternalValue(eng->toImpl(data)); }
/*! Calls this QScriptValue as a function, using \a thisObject as the `this' object in the function call, and passing \a arguments as arguments to the function. Returns the value returned from the function. If this QScriptValue is not a function, call() does nothing and returns an invalid QScriptValue. \a arguments can be an arguments object, an array, null or undefined; any other type will cause a TypeError to be thrown. Note that if \a thisObject is not an object, the global object (see \l{QScriptEngine::globalObject()}) will be used as the `this' object. One common usage of this function is to forward native function calls to another function: \snippet doc/src/snippets/code/src_script_qscriptvalue.cpp 3 \sa construct(), QScriptContext::argumentsObject() */ QScriptValue QScriptValue::call(const QScriptValue &thisObject, const QScriptValue &arguments) { Q_D(QScriptValue); if (!d || !d->value.isObject()) return QScriptValue(); if (isFunction() && thisObject.isValid() && thisObject.engine() && (thisObject.engine() != engine())) { qWarning("QScriptValue::call() failed: " "cannot call function with thisObject created in " "a different engine"); return QScriptValue(); } QScriptEnginePrivate *eng = QScriptEnginePrivate::get(engine()); return eng->toPublic(d->value.call(eng->toImpl(thisObject), eng->toImpl(arguments))); }