为什么我得到undefined
?所以我认为这是箭头功能中的一个问题......
我需要通过方法say
const obj = {
a: 42,
say: () => {
console.log(this.a);
}
};
obj.say();
答案 0 :(得分:1)
不要使用箭头功能,因为它们没有自己的this
。因此,this
(如果是箭头函数)将指向封闭上下文。
var obj = {
a: 42,
say: function() {
console.log(this.a);
}
};
obj.say();
答案 1 :(得分:1)
正如其他答案所解释的那样,Arrow Functions没有this
个值。
如果您想要类似的简明语法,您可能需要尝试ES6 Method Definition语法,该语法具有this
值,并且短于整个function(){...}
var obj = {
a: 42,
say() {
console.log(this.a);
}
}
如果你像这样构建你的应用程序,那么整个生猪并使用ES6 Classes可能是有意义的。
除了愚蠢之外,显然你可以做到以下几点:
var obj = {
a: 42,
say() {
console.log(obj.a); //obj not this
}
}