为什么我不能直接将 document.getElementById 分配给不同的函数?

2024-02-22

所以我试图定义一个类似于 document.getElementById 的函数 g() 。以下工作正常:

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

但为什么这个更直接的代码不起作用呢?

var g = document.getElementById;

问题在于context。当您触发一个对象的函数时,它会以该对象作为值来触发this(除非您另外指定)。g = document.getElementById把函数getElementById到变量中g,但不设置上下文。

因此,当你跑步时g(someId),没有可以运行该函数的上下文。它与全局对象一起运行window作为价值this,那是行不通的。 (准确地说,它不起作用,因为您可以使用任何document对象,而不仅仅是window.document,而您尚未指定。)

You could解决这个问题call,您可以在其中设置上下文:

g.call(document, someId);

然而,这并没有比原来的改进!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我不能直接将 document.getElementById 分配给不同的函数? 的相关文章

随机推荐