这个问题在这里已经有了答案:
9年前关闭。
Possible Duplicate:
If Javascript has first-class functions, why doesn’t this work?
当我尝试为
document.getElementById
创建别名函数时如下:f = document.getElementById;
但是,当我尝试打电话时:
var e_fullname = f(“fullname”);
出现错误:
Could not convert JavaScript argument
以下是可以的:
var e_fullname = f.call(document, “funname”);
你能告诉我为什么吗?
最佳答案
调用函数有四种方式:
f(p1, p2)
obj.f(p1, p2)
f.apply(obj, [p1, p2])
, f.call(obj, p1, p2)
new f(p1, p2)
在所有这些情况下,
f
只是对函数对象(具有 [[Call]]
内部属性的对象)的引用(指针)。在所有这些情况下,它的行为不同的是函数的调用方式,这很重要。所以,
f
只是对 getElementById
的引用对象,document.getElementById
之间没有区别和 someOtherHTMLElement.getElementById
;该函数不会保留对引用它的对象的引用。如果要绑定(bind)某个“所有者”对象,请使用
bind
方法:var f = document.getElementById.bind(document);
关于javascript - javascript中的别名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13000020/