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

posted @ 2012-05-03 10:59  screepinail  阅读(214)  评论(0编辑  收藏  举报