Делают ли экземпляры классов JavaScript функции клонирования?
Если у меня есть следующий код:
function myClass(){
this.type = 1;
this.ret = function(){
return this.type;
}
}
var ins1 = new myClass,
ins2 = new myClass,
ins3 = new myClass;
ins2.type = 2;
ins3.type = 3;
console.log(ins1.ret() + ' - ' + ins2.ret() + ' - ' + ins3.ret());
Вывод в консоли
1 - 2 - 3
Когда код запускается (console.log()
часть), есть ли один метод ret()
работает или три? Если каждый экземпляр создает новый метод, как я могу избежать этого? Если они все делают одно и то же, зачем их трое.
1 ответ
Решение
Методы действительно разные. Вы тратите память.
ins1.ret == ins2.ret; // false
Вместо этого вы можете определить метод в прототипе:
function myClass(){}
myClass.prototype.type = 1;
myClass.prototype.ret = function(){
return this.type;
};