所以这是一个非常简单的问题。让我们说我们有几个对象的数组。然后,使用find
函数,我们从数组中选择一个对象。如果我更改该对象的属性,则更改将按预期反映在数组中。
但是,如果我使用不同的对象定义新变量并将其设置为数组中的选定项,则更改将不可见。 E.g:
let
arr = [
{
id: 1,
name: 'James',
prop: {
my: 'prop'
}
},
{
id:2,
name:'Delaney',
prop:
{
my:
'prop'
}
}
],
item = arr.find(x => x.id > 1),
newItem =
{
id: 3,
name:'test',
prop: {
my: 'test'
}
};
item = newItem;
console.log(newItem);
console.log(item);
console.log(arr);
我希望由于item
和newItem
都具有相同的值,因此更改也会在arr
中看到,但事实并非如此。如果我在item
上更改了单个属性,则可以看到更改。是什么给了什么?
答案 0 :(得分:2)
想象一个变量item
作为路标。它指向内存中函数arr.find()
返回的对象。接下来,您创建另一个指向新创建对象的路标newItem
。
当你写item = newItem
时,你会说:“嘿道路标志item
,你能指向newItem
当前指向的对象吗?”