gpt4 book ai didi

javascript - javascript中Object Array的值是如何操作的?

转载 作者:行者123 更新时间:2023-11-30 18:38:05 26 4
gpt4 key购买 nike

重新思考这两个函数时,我感到很困惑:

第一个是这样的:

var test = [1,2,3];
var ele = test[0];
ele= 2;
alert(test[0]);

结果是1。我认为这是显而易见的。但是当我遇到这个时:

var test = [{id:1},{},{}];
var ele = test[0];
ele.id = 2;
alert(test[0].id);

结果变成2
那么谁能告诉我当它在对象数组中发生这种情况时 javascript 是如何工作的?

最佳答案

在 JavaScript 中,对象是通过引用分配的,而不是在内存中复制的。因此,如果您将现有对象分配给不同的变量,两者都将指向内存中的同一个对象。因此,对其中任何一个的修改都会反射(reflect)在两者中。

var a = {id: 1, name: "bob"};
var b = a;
console.log(b.name); // bob
b.name = "bill";
console.log(a.name); // bill

因此,在您的示例中,执行 ele.id = 2; 对保存对象的内存位置进行操作 test[0]。该对象的 id 属性的更改反射(reflect)在引用它的两个变量中 (test[0], ele)

请注意,如果您已将整个数组 test 分配给 ele,则修改其中一个数组成员将同时反射(reflect)在 test, ele 因为数组是 Javascript 中的对象:

var test = [1,2,3];
// Assign array test to ele
var ele = test;
// Modify one member
ele[0] = 2;
alert(test[0]); // 2

关于javascript - javascript中Object Array的值是如何操作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7665690/

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