变量赋值 - Javascript 赋值问题
variable assignment - Javascript assignation issue
我试图更改Javascript对象的结构,但我不明白我从日志中收到的结果。
我有以下对象:a = {e: 1, f: 2}
我想把它移到a.b
如果我这样做a.b = a
那么我会收到以下结果:
console.log(a) // {e: 1, f: 2}
console.log(a.b) // {e: 1, f: 2}
虽然我期待这样的事情:
console.log(a) // {b: {e: 1, f: 2}}
console.log(a.b) // {e: 1, f: 2}
有人可以解释我为什么会发生这种情况吗?
在 JS 中分配一个值不会移动它,而是复制它。
您正在向现有对象添加 b
属性。
它不会显示在日志中,因为console.log
通过不显示属性来保护自己免受无限递归的影响。
a.b = a
简单地将a.b
赋值为对a
的引用,这导致a
成为递归对象:
var a = {e: 1, f: 2};
a.b = a;
console.log(a.e, a.f); //1 2
console.log(a.b.e, a.b.f); //1 2
console.log(a.b.b.e, a.b.b.f); //1 2
console.log(a.b.b.b.e, a.b.b.b.f); //1 2
要实际将a
的属性移动到 a.b
中,您需要覆盖现有对象,为其现有值分配一个新属性b
:
var a = {e: 1, f: 2};
a = {b: a};
console.log(a); //{b: {e: 1, f: 2}}
相关文章:
- Javascript变量赋值|
- 无法为打字稿字典赋值
- Javascript-根据赋值顺序,按键合并对象数组
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何通过json对象数组为嵌套对象赋值
- 赋值后的回调函数
- ||(OR)运算符如何在赋值中工作
- 可以使用属性赋值实现多个函数
- 将ECMAScript 6析构函数赋值(ES2015)重构为旧版本的javascript
- 如何在javascript中为全局变量赋值
- 字符串问题的javascript赋值
- JS正则表达式结果表达式赋值问题
- node.js中的继承问题:试图覆盖子类的原型时出现赋值错误
- 变量未正确赋值,可能存在作用域问题(getJSON()中的each()中有一个开关的函数)
- Javascript对象字面量中奇怪的嵌套赋值问题
- 通过JavaScript赋值给Asp.net标签,然后通过c#会话对象传递时的问题
- jQuery异步问题,GET请求后变量赋值
- 为JavaScript变量赋值时出现问题
- 变量赋值 - Javascript 赋值问题
- JavaScript 类变量赋值 - 出了什么问题