- 此问题在此处已有答案**:
arrow function and this(2个答案)
20小时前关门了。
我有一段非常简单的代码,其中包含示例化对象,并且我通过原型公开了一些方法。
const MyClass = (function() {
function MyClass() {
this._obj = {
1: 'dfvdfvd'
};
}
function get() {
return this._obj[1];
}
MyClass.prototype.take = () => {
get.call(this);
}
return MyClass;
}());
let x = new MyClass();
console.log(x.take())
但是我一直把_obj
当作undefined
我在这里错过了什么?
1条答案
按热度按时间mbzjlibv1#
问题是
MyClass.prototype.take
是一个箭头函数,但是箭头函数没有自己的this
(参见MDN),因此this
是默认的window
,而this._obj
是undefined
。另外,确保从
MyClass.prototype.take()
返回一个值,否则将得到undefined
。