什么时候javascript引用一个函数,在构造函数中使用?

时间:2015-01-31 11:21:15

标签: javascript

我通常使用.prototype属性扩展构造函数,让多个实例引用相同的代码(而不是使用几个相同的代码),如下所示:

function Effect(){}
Effect.prototype.run = function(){}

但是,由于我当前项目的结构,我想做这样的事情:

使用效果选项定义effects对象:

var effects = {
    e1 : {
        run: function(){console.log(this);}
    },
    e2 : {
        run: function(){console.log(this);}
    }
}

使用对象定义创建效果实例

function Effect(effect) {
    this.run = effect.run;    
}

现在我可以创建几个实例(可能是数百个)

var E1 = new Effect(effects.e1);
var E2 = new Effect(effects.e2);
var E3 = new Effect(effects.e2);
.....

但是我担心,如果多次定义.run函数。

这些新实例是否会引用相同的函数(在effects对象中定义),还是会使用内存空间为每个实例创建一个新的“本地”函数?

1 个答案:

答案 0 :(得分:1)

函数是一个对象,因此它将始终通过引用存储。将其分配给不同的变量或属性只会创建对现有函数对象的新引用,并且不会占用该变量或属性所需的内存。