看看我的问题:
我有一个看起来像这样的课程:
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
由于
答案 0 :(得分:2)
X1
的所有实例共享相同的原型,这是base
具有config
属性的实例。因此,X1
的所有实例共享相同的config
属性。您可以将行this.config = {};
移至X1
构造函数,也可以在init()
中定义base
函数,为每个对象分配this.config
并调用{{1}来自init()
构造函数。