我正在尝试在课堂上调用this
方法。当我这样做时,我收到一条错误消息:
未捕获的TypeError:this.logMe不是函数
我尝试删除this
,但仍然出错。这是我的代码:
function Logger() {
this.logMe = function() {
console.log('Log a Message');
};
window.addEventListener('click', function() {
this.logMe();
});
}
var hello = new Logger();
我在做什么错,我该如何解决?
答案 0 :(得分:1)
您的this
用于匿名方法,而不是Logger
function() {
// this is about this anonymous method instead of Logger
this.logMe();
}
您可以尝试使用window.addEventListener('click', this.logMe);
来达到期望。
function Logger() {
this.logMe = function() {
console.log('Log a Message');
};
window.addEventListener('click', this.logMe);
}
var hello = new Logger();
答案 1 :(得分:0)
另一种模式(传递一些消息可能很有意义):
var Logger = {
log: function(msg) {
if(typeof(msg) != 'undefined') {
console.log(msg);
}
}
};
window.addEventListener('click', function() {
Logger.log('Log a Message');
});
答案 2 :(得分:-1)
function Logger() {
this.logMe = function() {
console.log('Log a Message');
};
window.addEventListener('click', () => this.logMe(), false);
}
var hello = new Logger();
看看这个:https://hackernoon.com/javascript-es6-arrow-functions-and-lexical-this-f2a3e2a5e8c4
答案 3 :(得分:-2)
您需要删除 this ,它会按预期运行。
function Logger() {
logMe = function() {
console.log('Log a Message');
};
window.addEventListener('click', function() {
logMe();
});
}
var hello = new Logger();