gpt4 book ai didi

JavaScript 引用下降

转载 作者:数据小太阳 更新时间:2023-10-29 04:39:33 25 4
gpt4 key购买 nike

我正在创建一个扩展现有应用程序的模块。我收到了一个变量 device,我想创建 myDevice始终保存相同的数据。假设数据包含在一个数组中:

https://jsfiddle.net/hmkg9q60/2/

var device = {
name: "one",
data: [1, 2, 3]
};
var myDevice = {
name: "two",
data: []
};

myDevice.data = device.data; // Assign array reference


device.data.push(4); // Push works on array reference

console.log(device.data); // [1, 2, 3, 4]
console.log(myDevice.data); // [1, 2, 3, 4] - ok


device.data = [0, 0, 0]; // A new array is assigned to 'device'
// and 'myDevice' reference stays with old array

console.log(device.data); // [0, 0, 0]
console.log(myDevice.data); // [1, 2, 3, 4] - I would like to get [0,0,0]

我想获得的是确保 myDevice 将始终保存与 device 相同的数据,即使有人决定在某处使用赋值运算符应用程序。我不想克隆 myDevice 因为我想保留“名称”和其他属性。

在 JavaScript 中有没有一种方法可以创建对对象字段的这种引用?

最佳答案

您可以使用 getter 和 setter,并直接从 device 对象读取和赋值。

var device = {
name: "one",
data: [1, 2, 3]
};
var myDevice = {
name: "two",
get data() { return device.data; },
set data(newdata) { device.data = newdata; },
};

console.log(myDevice.data);
device.data = [4,5,6];
console.log(myDevice.data);

关于JavaScript 引用下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56542590/

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