call与apply都是函数对象的一个方法,作用是改变函数的调用对象。它们各自的第一个参数就表示改变后的调用这个函数的对象。this指向就是第一个参数,若不填则指向全局。
var thisObj = {
title:'call,applay的用法与区别'
}
function a(){
console.log(this);
console.log(this.title);
}
a.call(thisObj,x,y,z)
a.apply(thisObj,[x,y,z])
这两个函数的方法功能相同,就是把一个函数里面的this设置为某个对象,区别就是后面的参数的语法。call需要使用逗号分隔列出所有参数,但是apply是把所有参数写在数组里面。需要注意的是即使只有一个参数,也必须写在数组里面。
参考:
https://baijiahao.baidu.com/s?id=1623502672848488220&wfr=spider&for=pc
http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html