diff --git a/src/qml/qml/v4/qv4value_p.h b/src/qml/qml/v4/qv4value_p.h
index bbca1acadd527e0a6844c9621ff69cbc7b8b7159..193b77c95d2195a7643b32dc92e3741cdae2c849 100644
--- a/src/qml/qml/v4/qv4value_p.h
+++ b/src/qml/qml/v4/qv4value_p.h
@@ -270,7 +270,7 @@ struct Q_QML_EXPORT Value
     ErrorObject *asErrorObject() const;
 
     template<typename T>
-    T *as() const { Managed *m = asObject(); return m ? m->as<T>() : 0; }
+    T *as() const { Managed *m = isObject() ? managed() : 0; return m ? m->as<T>() : 0; }
 
     uint asArrayIndex() const;
     uint asArrayLength(bool *ok) const;