这是一个课程练习,其中有一个创建一个函数来模拟如何从对象中检索属性,这样您就可以更好地了解正在发生的事情。
DOT = function dotFunc(obj, prop){
// if this obj has this property just return it
if(obj.hasOwnProperty(prop)){
return obj[prop];
// otherwise keep waking up the proto chain
} else if (obj.__proto__){
return DOT(obj.__proto__, prop);
}
};
我的问题是与其他如果......
我认为"如果此对象具有__proto__
属性,则再次返回DOT函数,但这次使用obj.__proto__
作为第一个值。这是基本上递归obj.__proto__.__proto__.__proto__
直到找到属性吗?
答案 0 :(得分:1)
好吧,正如@georg简单回答:“答案是肯定的”。
如果我必须开发,你的递归函数实际上会返回两个值:属性的值或undefined
。
因为隐式地,如果属性不在原型链中,那么if
/ else
将不会返回,并且该函数将不返回任何默认返回undefined
的内容。 / p>
HTH☺