不要a.call(this)
在你可以做的时候使用this.a()
,这会让事情变得更难理解,而AFAIK你没有通过这样做获得任何东西......
call
而apply
当你想使用的方法从其他"类",但你是有用的this
参数,如:
var nodes = document.querySelectorAll('a') ; Array.prototype.forEach.call(nodes, callback) ;
不能使用nodes.forEach
,因为nodes
是NodeList
不是一种Array
,因此没有一个forEach
方法,但你可以做到以上.
另一个用途call
是当你想this
在回调方法上强制实例时(例如,当你创建一个插件时).
plugin.doSomething ('#id', function () { // I would like 'this' to reference my HTMLElement here }) ;
所以doSomething
你可以这样做:
function doSomething (selector, callback) { var e = document.querySelector (selector) ; // Whatever... callback.call(e) ; }