提问人:etayluz 提问时间:5/9/2022 更新时间:5/9/2022 访问量:58
在 javascript 函数中绑定“this” [duplicate]
Binding 'this' in javascript function [duplicate]
问:
这个问题在这里已经有答案了:
如何在回调中访问正确的“this” (15 个答案)
“this”关键字是如何工作的,何时应该使用? (22 个答案)
使用“this”调用函数 (2 个答案)
去年关闭。
我有一个函数:
interval(duration, fn) {
var _this = this
this.baseline = undefined
this.run = function(){
if(_this.baseline === undefined){
_this.baseline = new Date().getTime()
}
fn()
var end = new Date().getTime()
_this.baseline += duration
var nextTick = duration - (end - _this.baseline)
if(nextTick<0){
nextTick = 0
}
_this.timer = setTimeout(function(){
_this.run(end)
}, nextTick)
}
this.stop = function(){
clearTimeout(_this.timer)
}
}
现在,当我这样调用此函数时:
var timer = new this.interval(this.tempo, function(){
this.audio.pause()
this.playBackground()
})
我需要以某种方式绑定“this”,以便它可以访问,以便我可以调用this.audio.pause()
如何绑定才能访问它?this
答: 暂无答案
评论
fn()
->fn.call(this)
如果你想在回调中使用它,不管它来自哪里。 -> 如果您只想在类中定义。this
new this.interval(this.tempo, function(){
new this.interval(this.tempo, () =>{
time
var
const
let
fn()
fn.call(this)
fn.call( _this )
this
this