Skip to content

Instantly share code, notes, and snippets.

@WebReflection
Created August 16, 2012 20:42
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save WebReflection/3373484 to your computer and use it in GitHub Desktop.
Save WebReflection/3373484 to your computer and use it in GitHub Desktop.
Object.getPropertyDescriptor and Object.getPropertyNames
!function(Object, getPropertyDescriptor, getPropertyNames){
// (C) WebReflection - Mit Style License
if (!(getPropertyDescriptor in Object)) {
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
Object[getPropertyDescriptor] = function getPropertyDescriptor(o, name) {
var proto = o, descriptor;
while (proto && !(
descriptor = getOwnPropertyDescriptor(proto, name))
) proto = proto.__proto__;
return descriptor;
};
}
if (!(getPropertyNames in Object)) {
var getOwnPropertyNames = Object.getOwnPropertyNames, ObjectProto = Object.prototype, keys = Object.keys;
Object[getPropertyNames] = function getPropertyNames(o) {
var proto = o, unique = {}, names, i;
while (proto != ObjectProto) {
for (names = getOwnPropertyNames(proto), i = 0; i < names.length; i++) {
unique[names[i]] = true;
}
proto = proto.__proto__;
}
return keys(unique);
};
}
}(Object, "getPropertyDescriptor", "getPropertyNames");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment