对象绑定javascript
Posted
技术标签:
【中文标题】对象绑定javascript【英文标题】:Object binding javascript 【发布时间】:2021-05-16 05:13:21 【问题描述】:我有一个我无法理解的问题。本人用js书学习javascript,有代码示例。
let a = ;
let b = a;
b = a["folder"] = ; // how to understand this?
// after that b = , a = folder:
请解释一下:(
【问题讨论】:
Duplicate of Modifying a copy of a JavaScript object is causing the original object to change、JS object copy by value vs copy by reference 和 Why does changing an Array in JavaScript affect copies of the array?。 相关:Is JavaScript a pass-by-reference or pass-by-value language?. 简而言之,
是内存中的一个对象,a =
表示a
现在指向该对象。当您现在执行b = a
时,b 现在也指向同一个对象。因此改变 a 实际上改变了对象,因此 b 也被“改变”了。
【参考方案1】:
您的示例中的最后一行是从右到左计算的,首先将a['folder]
的值分配为一个新的空对象,然后将b
的值分配为等于a['folder']
作为参考到同一个对象。
这会覆盖您对 b = a;
的初始分配
let a = ;
let b = a;
console.log(a === b); // true
b = a["folder"] = ;
console.log(a === b) // false, because b is now a reference to the object assigned to a.folder
console.log(a.folder === b) // true
【讨论】:
以上是关于对象绑定javascript的主要内容,如果未能解决你的问题,请参考以下文章