我正在创建一个扩展现有应用程序的模块。我收到了一个变量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]Run Code Online (Sandbox Code Playgroud)
我想获得的是要确保的myDevice是device,即使有人决定在应用程序中的某个位置使用assign运算符,也将始终与保持相同的数据。我不想克隆,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);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |