使用回调参数

时间:2015-10-08 10:37:14

标签: javascript jquery callback

我有一个自定义jQuery函数,它获取一个输入选项对象,以及一个在它完成后运行的回调函数。此外,在jQuery函数中,我创建了一个回调对象,其中包含我希望在回调函数中可用的函数。

keyboardInput : function(input, callback){
    // ...
    if(typeof callback === 'function') {
        callback.call(self.callback);
    }
    // ...
    self.callback = {
        hideCursor : function(){self.hiddenCursor = true;},
        showCursor : function(){self.hiddenCursor = false;},
    }
}

所以我调用了我的jQuery函数,并且回调运行,但我没有self.callback对象。

$('.txt-fx.keyboard-input.first').keyboardInput({
    speed : [60, 120],
    cursor : 'box',
    cursorBorderWidth : 3,
    delay : 2000,
}, function(obj){
    setTimeout(function(){
        obj.hideCursor();
        $('.txt-fx.keyboard-input.second').keyboardInput({
            speed : [60, 120],
            cursor : 'box',
            cursorBorderWidth : 3,
           delay : 2000,
        });
    }, 3000)
});

抛出:

  

未捕获的TypeError:无法读取属性' hideCursor'未定义的

我做错了什么?

1 个答案:

答案 0 :(得分:1)

<。call的语法是fn.call(thisarg, parameter1, parameter1 ...)

您将回调的this设置为self.callback - 请参阅MDN Documentation of function.call

你可能想做:

callback.call(null, self.callback);