对象绑定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的主要内容,如果未能解决你的问题,请参考以下文章

javascriptjavascript设计模式之单例模式

JavaScriptJavaScript DOM 编程

前端开发技能 —— JavaScript / ES6

JavaScriptJavaScript基础

JavaScriptJavaScript基础

javascriptjavascript常用函数大全