我创建了一个名为Survey的对象,并向其添加了原型函数,当我在原型函数中进行控制台记录时,日志显示的是窗口对象,而不是父Survey对象。
function Survey(questions = []) {
this.__questions__ = questions;
};
Survey.prototype.testFunction = () => {
console.log(this);
return this.__questions__;
}
// Create your object here
const SUR = new Survey(['1','2']);
SUR.testFunction(); // this prints [[Window]] Object instead of Survey
预期结果将是Survey对象
答案 0 :(得分:2)
这是因为您使用了Arrow function。
在箭头功能中,this
将指向外部。只需使用普通函数即可。
Survey.prototype.testFunction = function() {
console.log(this);
return this.__questions__;
}
答案 1 :(得分:2)
问题已经解决了:
Survey.prototype.testFunction = () => {}
箭头函数没有this上下文,它将从方法外部使用this上下文。由于未定义其他此上下文,因此它将成为窗口对象。
修复非常简单:使用常规函数:
Survey.prototype.testFunction = function () {}