javascript 函数实例的变量有误

javascript function instance has wrong its var

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();

code fiddle

我简单地写了一些错误的代码。 我虽然每个函数实例都有自己的 属性,所以最后的控制台输出将是 'num 1''num 3'.

我是不是想错了?

问题出在这里:

myClass.prototype.fun = function( ) {
    myFunction();
}

您没有将函数分配给实际实例,而是分配给 class。每次实例化 class 时,您都会将属于所有实例的原型函数更新为在最后一个实例中创建的特定 myFunction

您将使用以下代码获得所需的行为:

this.fun = function( ) {
    myFunction();
}