javascript基本类型和引用类型 (3)

javascript基本类型和引用类型

于是,时过境迁:

盒子a里,抛弃旧房子钥匙,放进了一把新房子钥匙,等价于

a = {n: 2}

盒子b里,还是旧房子的钥匙。

同时,因为在盒子a换钥匙之前,我们通过盒子a拿到旧钥匙来到旧房子,

并将盒子a换钥匙之后的新钥匙,放进了旧房子的盒子x里面,那盒子b等价于

b = { n: 1, x: {n: 2} }

也可以将这个例子稍加处理:

var xiaoMing = {moneyBox: 1} var xiaoQiang = xiaoMing xiaoMing.keyBox = xiaoMing = {moneyBox: 200} console.log(xiaoMing.keyBox) // undefined console.log(xiaoQiang.keyBox) // {moneyBox: 200}

再逐句翻译:

var xiaoMing = {moneyBox: 1}

小明有一把房钥匙,这个房子里有个钱柜,里面放着1元钱。

var xiaoQiang = xiaoMing

小强偷偷复制了一把小明的房钥匙,从此他也可以进出小明的房子。

xiaoMing.keyBox = xiaoMing = {moneyBox: 200}

小明在此房子里做了一个钥匙柜,这个钥匙柜能自动生成一把小明口袋里的钥匙(xiaoMing.keyBox = xiaoMing的作用,可能有点超现实),

javascript基本类型和引用类型

但是小明想,我口袋里的钥匙现在就是这个房子的钥匙,放在我的钥匙柜里也没什么意义,

不如这样吧,我再买一套房子,把口袋里的钥匙替换成新房子的钥匙,那这个钥匙柜里不就存下新房子的钥匙了吗。

于是,小明果断又买了一套房子,这个房子里也有个钱柜,里面放200元钱。

小明正准备回旧房子呢,突然想起来,自己口袋里的钥匙已经替换成新房子的钥匙了,

现在他只能进新房子,而进不去旧房子了,郁闷...

再说小强,

小强当初复制的是小明旧房子的钥匙,所以小强依然能来到这个旧房子,

进来后发现,多了一个钥匙柜,并且里面放着一把钥匙,

没错,这就是小明新房子的钥匙。

所以现在的局势很明朗了:

小明只有新房子的钥匙,只能进新房子(而且他应该觉得旧房子已经没人能进去了)。

而小强有小明旧房子的钥匙,

同时这个房间里还有小明的新房子的钥匙,所以小强也能进小明的新房子。

javascript基本类型和引用类型

用代码表示,就相当于

xiaoMing = {moneyBox: 200} xiaoQiang = { moneyBox: 1, keyBox: {moneyBox: 200} }

点击查看此文章的最新版本和全部内容

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyspjp.html