diff options
author | Kent Hansen <kent.hansen@nokia.com> | 2012-01-18 10:00:02 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-20 23:35:18 +0100 |
commit | 23805ae47898a1ae4b5c8d8bb30b8b69d2fc435a (patch) | |
tree | 487d8a346511974e210393a416dbeb95880387f7 /src/declarative/qml/v8 | |
parent | 45a83b43ea431a27a7ea05e7e621013dfcfe409a (diff) |
Add QJSValue::deleteProperty() function
This makes it possible to delete a property without relying on passing
a QJSValue of invalid type to setProperty() (the invalid type is going
to be removed).
Task-number: QTBUG-23604
Change-Id: I653b3349050ad1aac1cf6ccc8547c753abbb9f1d
Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
Diffstat (limited to 'src/declarative/qml/v8')
-rw-r--r-- | src/declarative/qml/v8/qjsvalue.cpp | 29 | ||||
-rw-r--r-- | src/declarative/qml/v8/qjsvalue.h | 2 |
2 files changed, 30 insertions, 1 deletions
diff --git a/src/declarative/qml/v8/qjsvalue.cpp b/src/declarative/qml/v8/qjsvalue.cpp index 9980463a8f..9d21a1db28 100644 --- a/src/declarative/qml/v8/qjsvalue.cpp +++ b/src/declarative/qml/v8/qjsvalue.cpp @@ -915,7 +915,7 @@ QJSValue QJSValue::property(quint32 arrayIndex) const built-in properties, such as the \c{length} property of Array objects or meta properties of QObject objects. - \sa property() + \sa property(), deleteProperty() */ void QJSValue::setProperty(const QString& name, const QJSValue& value) { @@ -944,6 +944,33 @@ void QJSValue::setProperty(quint32 arrayIndex, const QJSValue& value) } /*! + Attempts to delete this object's property of the given \a name. + Returns true if the property was deleted, otherwise returns false. + + The behavior of this function is consistent with the JavaScript + delete operator. In particular: + + \list + \o Non-configurable properties cannot be deleted. + \o This function will return true even if this object doesn't + have a property of the given \a name (i.e., non-existent + properties are "trivially deletable"). + \o If this object doesn't have an own property of the given + \a name, but an object in the prototype() chain does, the + prototype object's property is not deleted, and this function + returns true. + \endlist + + \sa setProperty(), hasOwnProperty() +*/ +bool QJSValue::deleteProperty(const QString &name) +{ + Q_D(QJSValue); + QScriptIsolate api(d->engine()); + return d->deleteProperty(name); +} + +/*! Returns true if this object has a property of the given \a name, otherwise returns false. diff --git a/src/declarative/qml/v8/qjsvalue.h b/src/declarative/qml/v8/qjsvalue.h index 756081d842..280f44e924 100644 --- a/src/declarative/qml/v8/qjsvalue.h +++ b/src/declarative/qml/v8/qjsvalue.h @@ -134,6 +134,8 @@ public: QJSValue property(quint32 arrayIndex) const; void setProperty(quint32 arrayIndex, const QJSValue &value); + bool deleteProperty(const QString &name); + QJSValue::PropertyFlags propertyFlags(const QString &name) const; QJSValue call(const QJSValue &thisObject = QJSValue(), |