this.a()a.call(this)我认为:
this.a()是一个方法this.MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call
还有其他区别吗?使用这两个选项时,您的最佳做法是什么?
不要a.call(this)在你可以做的时候使用this.a(),这会让事情变得更难理解,而AFAIK你没有通过这样做获得任何东西......
call而apply当你想使用的方法从其他"类",但你是有用的this参数,如:
var nodes = document.querySelectorAll('a') ;
Array.prototype.forEach.call(nodes, callback) ;
Run Code Online (Sandbox Code Playgroud)
不能使用nodes.forEach,因为nodes是NodeList不是一种Array,因此没有一个forEach方法,但你可以做到以上.
另一个用途call是当你想this在回调方法上强制实例时(例如,当你创建一个插件时).
plugin.doSomething ('#id', function () {
// I would like 'this' to reference my HTMLElement here
}) ;
Run Code Online (Sandbox Code Playgroud)
所以doSomething你可以这样做:
function doSomething (selector, callback) {
var e = document.querySelector (selector) ;
// Whatever...
callback.call(e) ;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
234 次 |
| 最近记录: |