获取原型链中的查找次数?

时间:2012-03-13 03:44:29

标签: javascript

我们可以获得object3.x的查找计数吗?

首先 - 看看拥有的财产 - 没有x

第二 - 查看object3的原型对象 - > object2 - no x

第三 - 研究object2的原型对象 - >对象1 - x已定义 - 是

object1 = {x:1};
object2 = Object.create(object1);
object2.y = 2;
object3 = Object.create(object2);
object3.z = 3;

object1.x; // lookup count = 1
object2.x; // lookup count = 2
object3.x; // lookup count = 3

1 个答案:

答案 0 :(得分:3)

你可以为此目的创建一个函数......

function prop_depth(obj, p) {
    var count = 1;

    while(obj && !obj.hasOwnProperty(p)) {
        obj = Object.getPrototypeOf(obj);
        count++; 
    }
    return obj ? count : -1;
}

prop_depth(object1,'x'); // lookup count = 1
prop_depth(object2,'x'); // lookup count = 2
prop_depth(object3,'x'); // lookup count = 3