javascript函数实例有错误的var

标签 javascript function properties instance

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

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

您将通过以下代码获得所需的行为:

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

关于javascript函数实例有错误的var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33601651/

相关文章:

c - 列表中具有特定功能的最小元素

python - 子类化属性在 __init__ 上引发 TypeError

javascript - javascript中FileList中的项目和长度是什么

javascript - css3 转换不是第一次在 Firefox 4 中触发

javascript - Ajax 页面完全加载然后更新 DIV

函数内的javascript函数

python - 我告诉Python骰子值的代码有什么问题?

r - 为不在包中的 R6 类创建 Rd 文档文件

swift - 惰性属性的内存管理

c#:将 Get/Set 从 vb.net 转换为 c#