Я играю в консоли, пытаясь понять прототипное наследование. Я знаком с классическим наследованием, но я никогда не использовал никакого наследования в моей работе JS.Javascript Simple Prototypal Inheritance
Если у меня есть:
var foo = {
cat: "oliver"
}
var bar = Object.create(foo);
foo.prototype = {
dog: "rover"
}
Когда я делаю:
dir(bar.dog)
или
dir(foo.dog)
Я ожидаю увидеть rover
, но они оба возвращаются в undefined
.
Что мне не хватает?
Заранее спасибо.
Я предполагаю, что я смущен: это свойство прототипа работает над экземплярами объектов (функций) и тем не менее Object.create может использовать объектный литерал в качестве прототипа? Или этот шаблон работает только с конструкторами? –
Вы не можете установить прототип в экземплярах объекта (например, литерал объекта foo) и ожидать, что он будет работать как установка прототипа функций. Все, что вы сделали, это добавить свойство с именем prototype в foo, но среда выполнения JS не будет использовать его для поиска. Давид дал самый правильный ответ. Дополнительная информация о том, что такое прототип: http://stackoverflow.com/a/16063711/1641941 – HMR