所以我试图定义一个类似于 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(使用前将#替换为@)