Skip to content

Instantly share code, notes, and snippets.

@tkrkt
Last active February 25, 2016 05:19
Show Gist options
  • Save tkrkt/4cd932fcbd93f5e962d3 to your computer and use it in GitHub Desktop.
Save tkrkt/4cd932fcbd93f5e962d3 to your computer and use it in GitHub Desktop.
getPropertyDescriptor
function getPropertyDescriptor(obj, key, path) {
path = path || [];
path.push(obj);
if (obj.hasOwnProperty(key)) {
var descriptor = Object.getOwnPropertyDescriptor(obj, key);
descriptor.path = path;
descriptor.owner = obj;
return descriptor;
} else if (key in obj){
return getPropertyDescriptor(obj.__proto__, key, path);
} else {
throw new Error('key: ' + key + ' is not in object');
}
}
// # usage
//
// getPropertyDescriptor(document, 'addEventListener');
// =>
// {
// configurable: true,
// enumerable: true,
// owner: EventTarget,
// path: [document, HTMLDocument, Document, Node, EventTarget],
// value: addEventListener(),
// writable: true
// }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment