JavaScript class 实例克隆功能吗?
Do JavaScript class instances clone functions?
如果我有以下代码:
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()
运行 是一种还是三种?如果每个实例都创建一个新方法,我该如何避免呢?如果他们都做同样的事情,为什么要三个。
方法确实不一样。你在浪费内存。
ins1.ret == ins2.ret; // false
相反,您可以在原型中定义方法:
function myClass(){}
myClass.prototype.type = 1;
myClass.prototype.ret = function(){
return this.type;
};
如果我有以下代码:
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()
运行 是一种还是三种?如果每个实例都创建一个新方法,我该如何避免呢?如果他们都做同样的事情,为什么要三个。
方法确实不一样。你在浪费内存。
ins1.ret == ins2.ret; // false
相反,您可以在原型中定义方法:
function myClass(){}
myClass.prototype.type = 1;
myClass.prototype.ret = function(){
return this.type;
};