Допустим, у меня есть функция конструктора:
function Cat()
{
this.tail = "long";
this.colour = "black";
}
console.log(Cat.prototype);
// returns an empty [object Object] with no properties (checked with `for...in` loop).
Так что на данный момент Cat.prototype
не имеет tail
и colour
.
var Charlie = new Cat();
console.log(Charlie.tail);
Так как же Charlie
наследует свойства Cat
, если они не определены в его прототипе. Я предполагал, что весь смысл объекта-прототипа состоит в том, чтобы отражать или хранить свойства конструктора, которые будут наследоваться всеми экземплярами cat
- это неправильно?
В какой момент объект-прототип заполняется этими свойствами? Или это происходит только тогда, когда я в качестве примера явно указываю Cat.prototype.eyes = brown
?
Кроме того, каков правильный подход для запроса свойств прототипа Объекта? Это for...in
петля? Я думаю, это не может быть Object.getOwnPropertyNames(Cat.prototype)
, потому что это не вернет унаследованные свойства.