Все объекты в JavaScript (за некоторыми исключениями) имеют prototype . Кроме того, сам prototype объекта является объектом.
функция Bird (name) {Поскольку
this.name = name;
}
тип Bird.prototype; // => объект
prototype является объектом, prototype может иметь свой собственный prototype ! В этом случае prototype Bird.prototype является Object.prototype : Object.prototype.isPrototypeOf (Bird.prototype);Как это полезно? Вы можете вспомнить метод
// возвращает true
hasOwnProperty из предыдущего hasOwnProperty : пусть утка = новая птица («Дональд»);Метод
duck.hasOwnProperty ( "имя"); // => true
hasOwnProperty определен в Object.prototype , к которому можно получить доступ с помощью Bird.prototype , к которому затем можно получить доступ duck . Это пример цепи prototype . В этой prototype цепочке Bird является supertype для duck , а duck - subtype . Object - это supertype как для Bird и для duck . Object - это supertype для всех объектов в JavaScript. Поэтому любой объект может использовать метод hasOwnProperty .Измените код, чтобы показать правильную цепочку прототипов.