js apply 与 call

简介

用来调用方法,第一个参数替换掉用方法的this对象

区别:
call:A.fn.call(B, arg1,arg2,argn...),后面的参数用逗号分隔

apply:A.fn.apply(B, [arg1,arg2,argn...]),后面的参数是数组

当fn是匿名函数时,可以省略。

示例

比如实现一个迭代器:

使用apply:

复制代码
var each = function (arr, callback) {
for (var i = 0, len = arr.length; i<len; i++) {
callback.apply(arr[i], [i, arr[i]])
}
}

each([1,2,3,4,5], function(i, el) {
console.log('this:',this, 'index: ',i, 'item: ', el)
})
复制代码

 

使用call:

复制代码
var each = function (arr, callback) {
for (var i = 0, len = arr.length; i<len; i++) {
callback.call(arr[i], i, arr[i])
}
}

each([1,2,3,4,5], function(i, el) {
console.log('this:',this, 'index: ',i, 'item: ', el)
})
复制代码

 

两者均输出:

this Number {1} index:  0 item:  1
init.js:1 this Number {2} index:  1 item:  2
init.js:1 this Number {3} index:  2 item:  3
init.js:1 this Number {4} index:  3 item:  4
init.js:1 this Number {5} index:  4 item:  5

 

posted @   原子切割员  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示