gpt4 book ai didi

javascript - JS作为Object单实例中的Array属性

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:57:07 25 4
gpt4 key购买 nike

搜索了一段时间以完全了解数组在对象中的工作原理。我熟悉其他语言,但这给我带来了很多困惑。有对象

var Test = {
TestArray: [],
}
var a = Object.create(Test);
var b = Object.create(Test);

根据我的预期,这应该创建对象的 2 个实例并具有 2 个不同的数组,但是内部数组的行为类似于 1 个实例,向数组添加值会影响两个实例,谁能解释为什么?

最佳答案

你是对的,Object.create正在创建一个新对象,但是每当您将一个对象传递给它时,它都会将该对象作为它的原型(prototype)。

意思是,如果那个原型(prototype)对象是一个数组,那么它们将共享同一个实例。

查看MDN给出的例子,他们调用的函数在原型(prototype)上,因此只有一个实例。

为了获得你的请求,你可以使用ES6类语法:

class Test {
constructor() {
this.TestArray = [];
}
}

const t1 = new Test();
const t2 = new Test();

t1.TestArray.push('item1');
console.log(t1.TestArray);
console.log(t2.TestArray); // Should print an empty array

关于javascript - JS作为Object单实例中的Array属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53419888/

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