Javascript 回调函数中的上下文
我正在处理一个API,它是实例上返回回调函数的方法Javascript 回调函数中的上下文,javascript,Javascript,我正在处理一个API,它是实例上返回回调函数的方法 myPlayer.onPlay(function() { console.log(this) }) 现在我希望它的上下文是播放器,但它不是,它是回调函数。我尝试过像这样绑定上下文,但也不起作用 我希望这是myPlayer,因为这是执行onPlay函数的上下文 myPlayer.onPlay(function() { console.log(this) }).bind(thi
myPlayer.onPlay(function() {
console.log(this)
})
现在我希望它的上下文是播放器,但它不是,它是回调函数。我尝试过像这样绑定上下文,但也不起作用
我希望这是myPlayer,因为这是执行onPlay函数的上下文
myPlayer.onPlay(function() {
console.log(this)
}).bind(this)
如何使上下文成为播放器的实例?我遗漏了什么吗?你必须这样做
myPlayer.onPlay(
函数(){
console.log(this);
}.bind(我的播放器)
);
由于您没有提供
.onPlay
将返回的内容,我认为它不会返回带有绑定方法的对象。因此,必须对函数本身使用bind
。如果您希望它成为myPlayer
,则不能在绑定中使用this
,因为在您当前的调用范围中,this
并不意味着什么。它可能意味着什么,但很可能不是玩家,否则你会这样做。this.onPlay
。您必须使用bind
绑定myPlayer
,而不是this
通常。绑定(this)
是正确的解决方案。您还可以使用箭头功能,它会自动绑定此
。如果您的解决方案不起作用,您需要在函数上发布。您需要调用.bind()
,而不是在.onPlay()
的返回值上。如果要将此
绑定到播放机,则需要使用.bind(myPlayer)
。尽管如此,您应该只引用函数中的myPlayer
变量,而不是this
。这取决于myPlayer正在做什么……“我希望这是myPlayer,因为这是执行onPlay函数的上下文?”-不。我们不知道onPlay
如何调用其回调,您尚未共享其代码(或链接库文档)。代码中没有任何内容指示这个值在内部会变成什么。@Bergi Right。可能是myPlayer.onPlay(函数(){…}.bind(this))
或myPlayer.onPlay(()=>{…})