访问此外部回调(access this on external callback)

2019-09-26 07:38发布

我与定制回调图书馆工作。

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这样我就可以访问它的方法吗?

Answer 1:

如果你通过了“本”到外部函数?

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

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


Answer 2:

你要找的是bind的功能, 这里是一些信息 。

绑定()方法创建一个新的功能,调用它时,具有其将此关键字设置为所提供的值,与前述的当新功能被调用任何设置参数给定的序列。

基本上,你可以做一些这样的:

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

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


文章来源: access this on external callback