求大神解答:
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);
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
此时this不是指向obj,另外你也取不到obj中的a,因为此时对象还没有生成,没有赋值给obj,所以obj仍是undefined