это против прототип [дубликат]
На этот вопрос уже есть ответ:
Использование «прототипа» против «этого» в JavaScript? 14 ответовВ чем разница между определением метода «area» как свойства «this» вместо «prototype»?
//console.clear()
function Rectangle(w, h)
{
this.width = w;
this.height = h;
this.area = function( ) { return this.width * this.height; }
}
var r = new Rectangle(2, 3);
var a = r.area( );
//console.log(a)
function Square(s)
{
this.side= s;
}
Square.prototype.area = function(){return this.side * this.side; }
var r = new Square(2);
var a = r.area( );
//console.log(a)
ВJavaScript - The definitive guide
в разделеPrototypes and Inheritance
ofChapter 9 , part 1
, автор говорит, что определение «области» метода внутри объекта-прототипа полезно, но его объяснение не совсем понятно:
".. область каждого отдельного объекта Rectangle всегда ссылается на одну и ту же функцию (конечно, кто-то может изменить ее, но вы обычно подразумеваете, что методы объекта являются постоянными). Неэффективно использовать обычные свойства для методов, которые предназначены для совместного использования всеми объектами одного и того же класса (то есть всеми объектами, созданными в одном конструкторе). "
Я знаю, что этот вопрос выглядит почти какэт один, но это не так.