在外部回调上访问它

时间:2016-07-18 14:21:37

标签: javascript jquery datatables

我正在使用具有自定义回调功能的库。

var dataTable = $("table").DataTable({
    //...

    initComplete: function(settings, json){
        console.log(this);
    }
}

我正在尝试外化此initComplete回调。我定义了一个自定义函数:

var initCallback = function(settings, json){
    console.log(this);
}

var dataTable = $("table").DataTable({      
    initComplete: initCallback
}

它确实有效,但this并未指向datatable本身。有没有办法将它绑定到initCallback,以便我可以访问它?

2 个答案:

答案 0 :(得分:0)

如果您将“this”传递给外部函数怎么办?

var initCallback = function(dataTableInstance, settings, json){
    console.log(dataTableInstance);
}

var dataTable = $("table").DataTable({      
    initComplete: function(settings, json) { initCallback(this, settings, json);}
}

答案 1 :(得分:0)

您要找的是bind函数,here is some info

  

bind()方法创建一个新函数,在调用时,将其this关键字设置为提供的值,并在调用新函数时提供任何前面提供的给定参数序列。

基本上,你可以这样做:

var initCallback = function(settings, json){
    console.log(this);
}

var dataTable = $("table").DataTable({      
    initComplete: initCallback.bind(dataTable)
}