为了账号安全,请及时绑定邮箱和手机立即绑定

js对象引用

js对象引用

守着一只汪 2019-01-28 14:17:07
第一种var a = {m: 1}; a.x = a = {c: 2};console.log(a, a.x)上面代码在chorme中结果:{c: 2}, undefined;这个结果怎么解释?第二种var a = {m: 1}; a.x = a;console.log(a)上面代码在chorme中结果只一个无限展开的对像;上面两种情况:第一种情况我的想法是1).运算符等级比=高;所以a.x = undefined;即此时a = {m: 1, x: undefined};2)=运算符从右到左;a先被改写成{c:2};然后执行a.x = a;最后结果就会和第二种的结果一样?但是第一种的结果完全和我想的不一样!!这个过程怎么解释?然后顺带一问:对于第二种情况;我在vue的源码中也见到类似的赋值操作;这无疑导致对象的引用;对象引用听着都感觉不好;为和vue中问什么还会出现这种东西了?其带来的利弊有那些?敲代码都没这些问题;现在静下心来思考发现自己好像都不懂js了!!!
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

你没发现a.m也没了吗?因为a被重新赋值了。
你试试下面这段程序:

var a = {m:1};var b = a;
a.x = a = {c:2};console.log(a, b);


查看完整回答
反对 回复 2019-01-28
  • 1 回答
  • 0 关注
  • 375 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信