当前位置:  开发笔记 > 编程语言 > 正文

this.a()vs a.call(this)在javascript中

如何解决《this.a()vsa.call(this)在javascript中》经验,为你挑选了1个好方法。



1> Holt..:

不要a.call(this)在你可以做的时候使用this.a(),这会让事情变得更难理解,而AFAIK你没有通过这样做获得任何东西......

callapply当你想使用的方法从其他"类",但你是有用的this参数,如:

var nodes = document.querySelectorAll('a') ;
Array.prototype.forEach.call(nodes, callback) ;

不能使用nodes.forEach,因为nodesNodeList不是一种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) ;
}


还有一种情况是"apply"与未知数量的参数一起工作.比如`arr = [1,2,3,4]; maximum = Math.max.apply(Math,arr);`
推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有