JS 物件的参考特性 DAY59

JS 在将值赋予到变数上时
会有两个特性(Call by value(传值) 与 Call by reference(传参考))

// 传值var name1 = '皮杰先生';var name2 = name1;name2 = '小鸡公主'console.log(name1 , name2); // 皮杰先生 小鸡公主
// 传参考// 假设此物件位址为 0x01var person = {    name : '皮杰先生',}// 传参考 0x01的位址传给 person2// person2 与 person 皆指向位址为0x01的物件var person2 = person;// 这里修改0x01 当然因为 person2 与 person 皆指向位址为0x01的物件 , 所以 person 也会被修改person2.name = '小鸡公主';console.log(person , person2); // 小鸡公主 小鸡公主console.log(person === person2); // true
// 传参考var person = {    name : '皮杰先生1',}var person2 = person;person2 = {    name : '皮杰先生2',};console.log(person , person2);// 两者参考位置不同console.log(person === person2); // false

我们来看一下比较複杂的例子

物件参考实际运作模式

var a = { x : 1};var b = a;a.y = a = { x : 2};// a = { x : 2} 是一个运算式// a.y = a = { x : 2} 同时执行// a.y 找的是原本的参考路径console.log(a.y);console.log(b);console.log(a === b.y);

分解如下
http://img2.58codes.com/2024/20123039LdhefwE8hk.jpg

http://img2.58codes.com/2024/201230392XoEaDkMvV.jpg

我们再来看一题

var a = { x: 1};var b = a;a.x = { x: 2};a.y = a = { y: 1};console.log(a); // 结果?console.log(b); // 结果?

分解如下
http://img2.58codes.com/2024/20123039kHUruf2t2n.jpg

http://img2.58codes.com/2024/20123039d2WhLlDb5N.jpg

那今天的介绍就到这里
若有任何问题 或 内容有误
都可以跟我说唷http://img2.58codes.com/2024/emoticon41.gif


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章