call和apply学习整理
《Javascript权威指南》8.6.4所述如下:
ECMAScript规范给所有函数定义了两个方法call()和apply()。使用这两个方法可以像调用其它对象的方法一样调用函数。call()和apply()的第一个参数都是要调用的函数的对象,在函数体内这一参数是关键词this的值。call()的剩余参数是传递给要调用的函数的值。apply()与call()方法相似,只不过要传递给函数的参数是由数组指定的。
call/apply 方法描述如下:
call(thisArg[,arg1,arg2…])
apply(thisArg[,arg1])
示例如下:
1 Math.max.apply(null,[0,2,8]);//结果为8 2 Math.max.call(null,0,2,8); //结果为8
结合参考资料2内容,自己比较认可的理解如下:
1、把隐藏的第一个参数显示化,通常一个函数(Function)的调用,会有一个额外的隐藏参数,就是函数(Function)所属的对象(如果没有所特指,则为global(如window)对象),在函数内你可用this关键字访问之。
2、改变程序上下文,将一个函数的对象上下文(Function Context)从初始的上下文改变为由 thisArg 指定的新对象。
参考资料:
1、《javascript权威指南》
2、http://blog.sina.com.cn/s/blog_57b671b601009i9y.html