JavaScript 函数实例的 var 错误

javascript function instance has wrong its var

本文关键字:var 错误 实例 函数 JavaScript      更新时间:2023-09-26
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();
}

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

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

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