Ну, вы должны использовать прототипы из-за повторного использования кода и наследования.
По сути, если вы привязываете метод к ключевому слову this
, вы предоставляете этот метод только этому конкретному экземпляру, а с прототипом вы пишете метод для всех экземпляров. этого класса.
пример:
function Person(name) {
this.name = name;
this.toString = function() {
return this.name;
}
}
var bob = new Person('Bob');
var jim = new Person('Jim');
jim.toString = function() {
return "I have amnesia, I forgot my name!";
};
Теперь, хотя bob
и jim
являются личностями (экземплярами одного и того же класса), они ведут себя по-разному, потому что у них есть собственный набор правил (методов), на которые они полагаются.
Если бы вы использовали прототип:
function Person(name) {
this.setName(name);
}
Person.prototype = {
name : 'default name',
setName : function(name) {
this.name = name;
},
toString : function() {
return this.name;
}
};
var bob = new Person('Bob');
var jim = new Person('Jim');
Person.prototype.toString = function() {
return "I have amnesia, I forgot my name!";
};
Теперь все ваши люди ведут себя одинаково.
Использование прототипного наследования полезно для повторного использования кода и не загружает память ненужными повторяющимися элементами. + Обновление классов таким образом намного проще.
person
gion_13
schedule
22.09.2011