Как эта функция взбирается по цепочке прототипов в JavaScript?

Это упражнение из курса, в котором есть функция создания имитации извлечения свойств из объектов, чтобы вы лучше поняли, что происходит.

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 ответ

Решение

Ну, как @georg просто ответил: "Ответ - да".

Если бы мне пришлось развить это, ваша рекурсивная функция на самом деле вернет два значения: либо значение свойства, либо undefined,

Поскольку неявно, если свойство не находится в цепочке прототипов, то if/else не вернется, и функция не вернет ничего, что по умолчанию возвращает undefined,

HTH ☺

Другие вопросы по тегам