Sometimes I get lost in prototype
chain of my JavaScript objects, so I would like to have a function that would print in a friendly way the prototype chain of a giv
You could use something like the following:
function printPrototype(obj, i) {
var n = Number(i || 0);
var indent = Array(2 + n).join("-");
for(var key in obj) {
if(obj.hasOwnProperty(key)) {
console.log(indent, key, ": ", obj[key]);
}
}
if(obj) {
if(Object.getPrototypeOf) {
printPrototype(Object.getPrototypeOf(obj), n + 1);
} else if(obj.__proto__) {
printPrototype(obj.__proto__, n + 1);
}
}
}
http://jsfiddle.net/5fv1tv1x/1/
Call it like so:
printPrototype(myObj);
It may require some modification to fit your exact needs. In node, you may also need some extra guards ( I tested in Chrome so I only needed to guard against 'obj' being undefined before recursing).
This function shows prototype chain of any object clearly:
function tracePrototypeChainOf(object) {
var proto = object.constructor.prototype;
var result = '';
while (proto) {
result += ' -> ' + proto.constructor.name;
proto = Object.getPrototypeOf(proto)
}
return result;
}
var trace = tracePrototypeChainOf(document.body)
alert(trace);
tracePrototypeChainOf(document.body)
returns "-> HTMLBodyElement -> HTMLElement -> Element -> Node -> EventTarget -> Object"