这个函数如何在JavaScript中爬上原型链?

时间:2016-03-05 16:23:18

标签: javascript prototypal-inheritance proto

这是一个课程练习,其中有一个创建一个函数来模拟如何从对象中检索属性,这样您就可以更好地了解正在发生的事情。

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__直到找到属性吗?

1 个答案:

答案 0 :(得分:1)

好吧,正如@georg简单回答:“答案是肯定的”

如果我必须开发,你的递归函数实际上会返回两个值:属性的值或undefined

因为隐式地,如果属性不在原型链中,那么if / else将不会返回,并且该函数将不返回任何默认返回undefined的内容。 / p>

HTH☺