Javascript创建对本机函数的引用

时间:2012-03-15 08:46:16

标签: javascript

我已经编写了这段代码(这是一个代码片段)似乎没有用。我把它隔离到了这里。

grab = window.document.getElementById;
grab("blueBox") // i.e. grab("blueBox").onclick [...]

是否可以在javascript中创建对本机函数的引用。我正在使用抓取的元素做一些事情,我只是把它留了下来。抓取功能似乎不起作用。

我正在使用FireFox的最新版本

4 个答案:

答案 0 :(得分:3)

你这样做的方式会搞乱函数的this值的分配。

grab = window.document.getElementById;
grab("blueBox") // i.e. grab("blueBox").onclick [...]

此处this将是global对象。尝试:

grab.apply(window.document, ["blueBox"])

或在较新的浏览器中:

grab = window.document.getElementById.bind(window.document);

直接定义this将会是什么。

答案 1 :(得分:1)

function grab(id) {
    return window.document.getElementById(id);
}

grab("blueBox");

答案 2 :(得分:1)

这里的第一步始终是JavaScript控制台。 Firebug是你的朋友。如果对您没有任何意义,请告诉我们错误消息。

同时,这是一个解决方法:

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

答案 3 :(得分:0)

原因是因为函数getElementById未被调用为document的方法,因此其关键字不会引用正确的对象。按照其他答案中的建议使用调用表示当引用该文档时,getElementById可以正常工作。