diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp
index 8e0c63f7f3a2964773cb59c2460df22ebff12068..a0ab5d1ab49441cc602c354b158733547e0d2095 100644
--- a/src/libs/qmljs/qmljsinterpreter.cpp
+++ b/src/libs/qmljs/qmljsinterpreter.cpp
@@ -1097,6 +1097,7 @@ void Activation::setArguments(const ValueList &arguments)
 FunctionValue::FunctionValue(ValueOwner *valueOwner)
     : ObjectValue(valueOwner)
 {
+    setMember(QLatin1String("length"), valueOwner->numberValue());
 }
 
 FunctionValue::~FunctionValue()
@@ -1205,18 +1206,6 @@ const Value *Function::argument(int index) const
     return _arguments.at(index);
 }
 
-const Value *Function::lookupMember(const QString &name, const Context *context,
-                                    const ObjectValue **foundInScope, bool examinePrototypes) const
-{
-    if (name == "length") {
-        if (foundInScope)
-            *foundInScope = this;
-        return valueOwner()->numberValue();
-    }
-
-    return FunctionValue::lookupMember(name, context, foundInScope, examinePrototypes);
-}
-
 const Value *Function::invoke(const Activation *activation) const
 {
     return activation->thisObject(); // ### FIXME it should return undefined
diff --git a/src/libs/qmljs/qmljsinterpreter.h b/src/libs/qmljs/qmljsinterpreter.h
index a56412337f42652fbe57c55a7fd53674e33fdd8f..4a5f1f57bffb3834217e056dfc42b705fde4a1d4 100644
--- a/src/libs/qmljs/qmljsinterpreter.h
+++ b/src/libs/qmljs/qmljsinterpreter.h
@@ -549,11 +549,6 @@ public:
     void addArgument(const Value *argument);
     void setReturnValue(const Value *returnValue);
 
-    // ObjectValue interface
-    virtual const Value *lookupMember(const QString &name, const Context *context,
-                                      const ObjectValue **foundInObject = 0,
-                                      bool examinePrototypes = true) const;
-
     // FunctionValue interface
     virtual const Value *returnValue() const;
     virtual int argumentCount() const;