2011年6月14日星期二

  call与apply函数

编写Javascript库,必然离不开的两个函数call与apply。call与apply函数是Javascript中比较晦涩的两个函数,网络上有太多讲解它们的教程,这里只是简单说明一下。 函数原型如下: apply(thisObj,argArray) call(thiObj[,arg1,arg2…] ]) 它们本质上是一样的,只是形式上不同而已。它们的作用只是把函数执行的当前上下文替换为thisObj所指向的上下文,这里的上下文,其实就是this对象。很抽象,看下面的代码段。
var Student = {	name: 'tom',	age: 23};			var Robot = {	name: 'Rolsen'};			demo = function () {	return this.name;}
上面的代码片段,定义了两个对象Student与Robot,它们都有一个name属性,函数demo只是返回this的属性name,明显的是demo自己是没有name属性,可以想象直接调用它将返回'undefined'。
var str = '';str += demo.call(Student);str += '<br />' + demo.call(Robot);
第2行,demo的this对象指向的是Student,因此str的值是tom;而第3行,this指向对象Robot,因此str的值是Rolsen。似乎平平无奇,它的妙处mootools会告诉我们。

没有评论:

发表评论