javascript - 将 document.getElementById 分配给另一个函数

标签 javascript first-class-functions

我正在尝试在 JavaScript 中执行以下操作:

var gete = document.getElementById;

但我收到以下错误(来自 FireBug 的控制台):

未捕获异常:[异常...“对 WrappedNative 原型(prototype)对象的非法操作”nsresult:“0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)”位置:“JS 框架::http://localhost:8080/im_ass1/::匿名::第 15 行"数据:无]

现在显然我可以按如下方式包装函数:

var gete = function (id) {
    return document.getElementById(id);
};

但是,在将函数分配给另一个名称时出现上述异常的原因是什么?

最佳答案

ECMAScript 5 引入了 bind() 函数,它将函数与对象绑定(bind)在一起,这样就可以直接调用它而无需使用 func.call(thisObj)每次通话。

var func = document.getElementById.bind(document);
func("foo");  // We don't have to use func.call(doument, "foo")

bind() 首次在 Prototype 中可用库,后来被添加到语言中。

关于javascript - 将 document.getElementById 分配给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2656469/

相关文章:

javascript - 如何在 JavaScript 中实现柯里化(Currying)?

ios - 在选择器中使用 Swift3 函数参数

javascript - AngularJS $http : send message ignoring fields

javascript - 如何用另一个数组中元素中的字符串替换数组中元素中的字符串?

javascript - 在 ReactJS 中每秒更新一次时钟元素

java - Java 的函数满足第一类元素定义中的这些点中的多少个?

go - 开始,一流的功能和最佳实践

javascript - 可以在运行时在 Javascript 中创建函数吗?

javascript - 使用 JavaScript 跟踪像素

javascript - Qualtrics:jquery 附加的空按钮刷新页面