W. Haosen
W. Haosen

Reputation: 25

How did the value of Object Array in javascript be operated?

I feel puzzled when I rethink of these two functions:

The first one goes like this:

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

The result is 1. I think this is obvious. But when I meet this:

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

The result turns to be 2
So could anyone tell me that how the javascript work when it happens like this in the object array?

Upvotes: 1

Views: 63

Answers (1)

Michael Berkowski
Michael Berkowski

Reputation: 270637

In JavaScript, objects are assigned by reference, rather than copied in memory. So if you assign an existing object to a different variable, both will point to the same object in memory. Modifications to either will therefore be reflected in both.

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

So in your example, executing ele.id = 2; operates on the memory location holding the object at test[0]. The change to the id property of that object is reflected in both variables referencing it (test[0], ele)

Note that if you had assigned the entire array test to ele, modifying one of the array members would have been reflected in both test, ele since Arrays are objects in Javascript:

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

Upvotes: 2

Related Questions