function myClass( _num) {
var num;
this.num = _num;
var myFunction = function( ) {
console.log("num", _num);
}
myFunction();
myClass.prototype.fun = function( ) {
myFunction();
}
}
var c1 = new myClass(1);
var c2 = new myClass(2);
var c3 = new myClass(3);
c1.fun();
我简单地写了一些错误的代码。
我虽然每个函数实例都有自己的属性,所以最后的控制台输出将是 'num 1'
而不是 'num 3'
。
我是不是想错了?
最佳答案
问题出在这里:
myClass.prototype.fun = function( ) {
myFunction();
}
您不是将函数分配给实际实例,而是分配给类。每次实例化该类时,您都会将属于所有实例的原型(prototype)函数更新为在最后一个实例中创建的特定 myFunction
。
您将通过以下代码获得所需的行为:
this.fun = function( ) {
myFunction();
}
关于javascript函数实例有错误的var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33601651/