Ignore:
Timestamp:
Dec 18, 2005, 5:27:00 AM (19 years ago)
Author:
andersca
Message:

2005-12-18 Anders Carlsson <[email protected]>

Reviewed by Darin and Geoffrey.

  • kjs/object_object.cpp: (ObjectPrototype::ObjectPrototype): Add isPrototypeOf to object prototype.

(ObjectProtoFunc::callAsFunction):
Implement isPrototypeOf

  • kjs/object_object.h: (KJS::ObjectProtoFunc::): Add id for isPrototypeOf.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/object_object.cpp

    r11566 r11650  
    4444    putDirect("hasOwnProperty", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::HasOwnProperty,             1), DontEnum);
    4545    putDirect("propertyIsEnumerable", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::PropertyIsEnumerable, 1), DontEnum);
     46    putDirect("isPrototypeOf", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::IsPrototypeOf,               1), DontEnum);
    4647    // Mozilla extensions
    4748    putDirect("__defineGetter__", new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::DefineGetter,             2), DontEnum);
     
    7879            PropertySlot slot;
    7980            return jsBoolean(thisObj->getOwnPropertySlot(exec, Identifier(args[0]->toString(exec)), slot));
     81        }
     82        case IsPrototypeOf: {
     83            if (!args[0]->isObject())
     84                return jsBoolean(false);
     85         
     86            JSValue *v = static_cast<JSObject *>(args[0])->prototype();
     87
     88            while (true) {
     89                if (!v->isObject())
     90                    return jsBoolean(false);
     91               
     92                if (thisObj == static_cast<JSObject *>(v))
     93
     94                    return jsBoolean(true);
     95               
     96                v = static_cast<JSObject *>(v)->prototype();
     97            }
    8098        }
    8199        case DefineGetter:
Note: See TracChangeset for help on using the changeset viewer.