gpt4 book ai didi

JavaScript 对象甚至在新对象中也存储以前的值

转载 作者:行者123 更新时间:2023-11-28 17:48:52 24 4
gpt4 key购买 nike

JavaScript 在处理对象时确实表现得很奇怪。虽然我不确定这是否是正确的行为。

在 new Object() 中,我在对象中设置了一些属性。下次当我再次执行 new 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
为什么?因为我正在创建 new Class() 并且在前面的实例中我使用“this”设置了值,所以它不是静态的,并且应该显示其中所有对象的默认属性。

我创建了上面的示例作为演示。我在图书馆面临这个问题。我知道这与存储为引用的对象有关。

我应该如何继续获得预期的输出?有什么想法吗?

最佳答案

您可以将原型(prototype)属性(对于所有实例来说都是相同的)移动到类中的 this 对象。

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

关于JavaScript 对象甚至在新对象中也存储以前的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46097014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com