0

求大神解答:
let obj = {a: 1, b: 2*this.a} 这样取不到a,是this问题还是只能调用函数?

2018-08-14 提问
4 个回答
2

此时this不是指向obj,另外你也取不到obj中的a,因为此时对象还没有生成,没有赋值给obj,所以obj仍是undefined

1
let obj = {a: 1, b: 2*this.a} 

obj.b // 这个值取决于运行的环境,简单来说如果你是在浏览器全局上下文执行就是2 * window.a

你想在对象里面使用对象里面的属性是不现实的,因为在计算这个属性的时候,你的对象还没有创建出来,是不可能的。

就好像这样:

 let obj = {a: 1, b: 2 * obj.a} 


因此要实现这样的功能,需要:

 let obj = {a: 1, b: () => 2 * obj.a}
  
  obj.b()

或者this也行,但是不推荐

obj = {a: 1, b: function() {return 2 * this.a}}
  
  用法一样的:
  
  obj.b()
0
let obj={a:1};
obj.b=2*obj.a;
0

关于this的指代其他回复都有讲,我就不废话了。
这个问题想要用a的值可以这样

function Obj() {
    this.a = 1;
    this.b = 2 * this.a;
}
var obj = new Obj();
console.log(obj.b);

撰写答案

推广链接