Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save subtleGradient/1052392 to your computer and use it in GitHub Desktop.
Save subtleGradient/1052392 to your computer and use it in GitHub Desktop.
Polyfill for Object.getPrototypeOf
if (typeof Object.getPrototypeOf != "function")(function(){
Object.getPrototypeOf =
(typeof "".__proto__ == "object")
? function(object){
return getPrototypeValue(object, '__proto__');
}
: function(object){
return getPrototypeValue(object, 'constructor').prototype;
}
;
var hasOwnProperty = Object.prototype.hasOwnProperty;
function getPrototypeValue(object, propertyName){
try{
if (hasOwnProperty.call(object, propertyName)){
var ownValue = object[propertyName];
delete object[propertyName];
}
return object[propertyName];
}
catch(e){throw e}
finally{
object[propertyName] = ownValue;
}
}
}());
@hueitan
Copy link

hueitan commented Jun 3, 2014

How about this

if (typeof Object.getPrototypeOf === 'undefined') {
    Object.getPrototypeOf = function (obj) {
        var t = typeof obj;
        if (!obj || (t !== 'object' && t !== 'function')) {
            throw new TypeError('not and object');
        }
        return obj.__proto__;
    };
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment