Вот пример из Javascript сексуальный сайт:JavaScript прототип и это наследство
function People() {
this.superstar = "Michael Jackson";
}
People.prototype.athlete = "Tiger Woods";
// Define "athlete" property on the People prototype so that "athlete" is
// accessible by all objects that use the People() constructor.
Мой вопрос: Что разница между наследуют свойство спортсмена из people.prototype.athlete
, как он будет внутри людей конструктора this.athlete="Tiger Woods";
.
В комментариях сказано, что athlete
доступен всем объектам, использующим конструктор People()
.
Но когда я ставлю это свойство атлетом, как я сказал внутри конструктора людей, он также будет доступен всем объектам, использующим конструктор People()
.
В чем разница между 1 и 2?
//1
function People() {
this.superstar = "Michael Jackson";
}
People.prototype.athlete = "Tiger Woods";
//2
function People() {
this.superstar = "Michael Jackson";
this.athlete = "Tiger Woods";
}
Когда я создаю объект, используя пример # 1:
var person = new People();
console.log(person.hasOwnProperty('superstar')); //TRUE
console.log(person.hasOwnProperty('athlete')); // FALSE
Я знаю, что athlete
имущество не принадлежит по person
объекта.
Но каковы другие отличия?
Это принципиально единственное отличие. (и, конечно же, 'Person.prototype.hasOwnProperty (...)') – Bergi
Однако последствия этой разницы огромны ... Попробуйте создать несколько экземпляров, а затем смените 'Person.prototype.athlete', чтобы понять, что наследование свойств действительно * означает * ! – Bergi
Возможный дубликат [Понимание прототипного наследования в JavaScript] (http://stackoverflow.com/questions/892595/understanding-prototypal-inheritance-in-javascript) – hazzik