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 @ 2022-12-28 16:53  原子切割员  阅读(16)  评论(0编辑  收藏  举报