javascript - 给 JavaScript 对象的属性赋值

标签 javascript

var obj1 = {};
var obj2 = {};
var copyObj1 = obj1; 
var copyObj2 = obj2;

copyObj1 = {
    name :'abc'
};

copyObj2.name = 'xyz';

console.log("obj1",obj1); // obj1 {}
console.log("obj2",obj2); // obj2 { name: 'xyz' }
console.log("copyObj1",copyObj1); // copyObj1 { name: 'abc' }
console.log("copyObj2",copyObj2); // copyObj2 { name: 'xyz' }
  1. 为什么 obj1 的值与 copyObj1 不同,尽管 copyObj1obj1 的引用?
  2. 如果我们通过 {name:'abc'}obj1.name ='abc' 赋值有什么区别?

最佳答案

1) 为什么 obj1 的值与 copyObj1 不一样,尽管 copyObj1 是 obj1 的引用?

回答:-

您正在将 obj1 的引用存储到 copyObj1。但是这条语句

copyObj1 = {
   name: 'abc'
};

创建一个新的 copy1 对象,并且对 obj1 的引用现在丢失了。

2) 如果我们通过 {name:'abc'} 赋值和 obj1.name ='abc' 有什么区别?

回答:-

两者的区别在于你什么时候做

a = {name: 'abc'} or a = {};

您正在创建一个新对象,该对象之前的任何引用现在都丢失了

a.name = 'abc';

只是改变对象的属性值。

关于javascript - 给 JavaScript 对象的属性赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38742872/

相关文章:

javascript - 将某个术语的所有实例都转换为小写?

javascript - 如何获取纯javascript函数变量的结果

Rails 中带有 Turbolinks 的 Javascript 条件?

javascript - 使用 native 移动字体而不是自定义字体加载网站的最佳方式

javascript - 如何在 Coffeescript .js.coffee 中渲染 ruby​​ 代码

javascript - (Vue, ChartJS) 从子组件 Canvas 上下文为图表创建渐变背景

javascript - Jade 从路由器传递对象/数组时出错

javascript - 避免在手机中加载图像

javascript - JS - 获取当前网站名称(类似于 Safari)

具有固定 '@abc.com' 的电子邮件的 JavaScript 正则表达式