JavaScript的。参考问题。遗产。范围这个

时间:2014-09-16 01:36:49

标签: javascript

看看我的问题:

我有一个看起来像这样的课程:

var els=[];
var base = function(){
    this.config = {}
}


var X1 = function(){
}
X1.prototype = new base();
X1.prototype.indexme = function(i){
    this.config.index = i;
}
X1.prototype.add = function(){
    var i = els.push(this)
    this.indexme(i)
}

var teste = new X1();
teste.add();
var teste2 = new X1();
teste2.add();
var teste3 = new X1();
teste3.add();

console.log(els)

为什么this.config.index被覆盖到另一个实例?

我希望teste有config.index = 1; teste2 config.index = 2和teste3 config.index = 3

由于

1 个答案:

答案 0 :(得分:2)

X1的所有实例共享相同的原型,这是base具有config属性的实例。因此,X1的所有实例共享相同的config属性。您可以将行this.config = {};移至X1构造函数,也可以在init()中定义base函数,为每个对象分配this.config并调用{{1}来自init()构造函数。