javascript - javascript中的别名函数

标签 javascript

这个问题在这里已经有了答案:




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/

    相关文章:

    javascript - 混淆 MessagePack 的 JavaScript 实现

    javascript - 如何使用动态 ID 在 HTML 下拉列表中获取选定的文本

    javascript - React 中 es6 类的关键 Prop

    javascript - Chrome Javascript 控制台中的 $$ 和 $x 是什么?

    javascript - AngularJS:在除一个字段外的所有字段上在 Controller 中进行过滤

    javascript - 具有后台同步模块的 Workbox Service Worker

    javascript - 通过 JQuery ajax 提交带有键的数组

    javascript - 相对指针位置

    javascript - Ember-cli 如何添加 FileSaverjs 和 Blobjs

    javascript - $.getJSON 在 Internet Explorer 中不工作