我正在尝试在 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/