求大神解答:
let obj = {a: 1, b: 2*this.a} 这样取不到a,是this问题还是只能调用函数?
求大神解答:
let obj = {a: 1, b: 2*this.a} 这样取不到a,是this问题还是只能调用函数?
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()
关于this的指代其他回复都有讲,我就不废话了。
这个问题想要用a的值可以这样
function Obj() {
this.a = 1;
this.b = 2 * this.a;
}
var obj = new Obj();
console.log(obj.b);
9 回答9.8k 阅读
4 回答8.4k 阅读✓ 已解决
7 回答10.4k 阅读
5 回答8.6k 阅读
2 回答10.8k 阅读✓ 已解决
6 回答2k 阅读
4 回答11.6k 阅读
此时this不是指向obj,另外你也取不到obj中的a,因为此时对象还没有生成,没有赋值给obj,所以obj仍是undefined