apply()和call()
apply()和call()都是Function原型方法,他们可以把特定函数当做一个方法绑定到指定对象上并进行调用。
用法如下:
function.call(thisobj,args...)//接收多个参数列表 function.apply(thisobj,args)//接收一个数组或者伪类数组
其中this.obj表示指定的对象,参数args表示要传递给被调用函数的参数
实例如下:
function o(a,b){ //定义函数结构伪对象 return a*b } function f(a,b){ //定义简单函数 return a+b } alert(f.call(o,3,4)) //返回7
实例中使用call方法把函数f绑定到对象o身上,变成了o的一个方法
动态调用函数f,同时将参数3和4传递给函数f,调用函数f后返回7
apply()和call()的区别:
apply()只有两个参数,一个是新的this对象,一个是参数数组,如果args不是一个有效数组或者arguments对象,将会导致TypeError
call()可以接受多个参数,第一个参数与apply()相同,第二个是一串参数列表。
如果没有给定thisobj则默认是全局对象