如何将JavaScript对象属性值赋值给自身另一属性?代码问题求解
解决对象属性间赋值的问题
你遇到的问题很常见——在对象字面量初始化的时候,this并不指向当前正在创建的对象,而是指向当前的上下文(比如浏览器里的全局window对象,或者Node.js里的global),所以this.a根本拿不到你定义的obj.a,自然返回undefined。
要实现把a的值赋值给b,用函数的方式确实可行,这里给你几种常用方案:
方案1:使用getter属性(动态关联)
这是最符合你“在对象中用函数实现”需求的方式,当你访问obj.b时,会自动触发这个getter函数,此时this指向当前对象,就能拿到a的值:
var obj = { a: 2, get b() { return this.a; } }; console.log(obj.b); // 输出2
而且这个方法是动态的,如果后续你修改obj.a = 3,再访问obj.b会自动返回3,保持和a的同步。
方案2:创建对象后手动赋值(静态赋值)
如果不需要b跟着a变化,只是一次性把a的值赋给b,可以先创建对象,再单独赋值:
var obj = { a: 2 }; obj.b = obj.a; console.log(obj.b); // 输出2
方案3:用工厂函数创建对象
通过函数封装对象的创建过程,在函数内部可以直接访问对象的属性并赋值:
function createMyObj() { const obj = { a: 2 }; obj.b = obj.a; return obj; } var obj = createMyObj(); console.log(obj.b); // 输出2
内容的提问来源于stack exchange,提问作者user5711656
相关产品推荐
相关产品推荐

