在阅读JavaScript高级程序设计时,有这样一个例子:
var person = { name: "Nicholas"};
var people = [{ name: "Nicholas"};
var morePeople = [person];
alert(people.indexOf(person)); // -1
alert(morePeople.indexOf(person)); // 0
吾思不得其解为什么people.indexOf(person))是-1,故画图来看看
var person = { name: "Nicholas"};
分析这段语句,首先在堆中创建了地址XXXXXA(假设),里面存放了name: "Nicholas",
并且在栈中创建了变量person,其本质是个指针,保存了指向堆中的地址XXXXXA,其它几段语句同理,见上图
为了证明morePeople[0]存放的是xxxxxA即person
alert(morePeople[0] == person); // true 根据图很好理解为什么是true