在对象的情况下,JavaScript确实表现得很奇怪。虽然我不确定这是否是正确的行为。
在新的Object()中,我在对象中设置了一些属性。下次当我再次执行新的Object()时,我获取在前一个实例中设置的值而不是默认值。哎呀。
以下示例清楚地解释了问题
function testo() {}
testo.prototype = {
obj: {
what: {
value: 5
}
},
done: function () {
console.log(this.obj.what.value);
this.obj.what = {value: 10};
}
};
var x = new testo();
x.done();
var y = new testo();
y.done();
上述代码的输出是: -
5
10
我原以为: -
5
5
为什么呢?因为我正在创建新的Class(),并且在之前的实例中我使用'this'设置了值,它不是静态的,并且它内部的所有对象的默认属性都应该显示出来。
我创建了上面的示例作为演示。我在我的图书馆面对这个问题。我知道它与对象有关,存储为参考。
我应该如何继续获得预期的输出?有什么想法吗?
答案 0 :(得分:3)
您可以将prototype属性(对于所有实例都相同)移动到该类中的此对象。
function testo() {
this.obj = { what: { value: 5 } };
}
testo.prototype = {
done: function () {
console.log(this.obj.what.value); this.obj.what = { value: 10 };
}
};
var x = new testo();
x.done();
var y = new testo();
y.done();