返回列表

function的方法.apply和.call

默认分类 2011-04-11 23:16:30

A.call(b) 把函数A作为对象b的成员函数执行,并返回结果;和对象b真正的成员函数的区别是不能读取对象b中的内部变量;函数A也不会覆盖对象b中已定义的同名成员函数

转载:http://www.nshen.net/blog/article.asp?id=354
[积累]function的方法.apply和.call
[ 2005-09-12 12:03:55 | 发布: N神 ]
字体大小: 大 | 中 | 小
看到帝国一个老帖子记下来

Fictiony:

所有的函数都是Function这个对象的实例,所以每一个函数都有apply、call的方法以及prototype的属性。

myFunc.call(theObj, arg1, arg2....)的作用是执行myFunc函数,其参数为arg1, arg2...,但和一般的执行有些区别,这里它重新指定了myFunc的主体对象,也就是说,原来假设myFunc是myObj的一个成员函数或者myFunc是一个全局函数,现在就让它作为theObj的一个成员函数来执行,myFunc内部的this,就指代theObj

myFunc.apply(theObj, arguments)的作用和myFunc.call类似,theObj也是作为新指定的主体对象,只不过它把参数列表都封装到arguments数组中了。它一般是用来在一个函数内执行另一个函数,而需要成批传输参数,或者参数的个数事先不知道的情况下的。

mF.call和mF.apply:
不同在:参数形式

vervethe:
相同的好处是:
 可临时扮演任何对象的成员
 利于将用户输入的内容解析给函数,来执行
[最后编辑于 N神, at 2005-09-12 12:06:51]