这个问题 (可通过 ID 访问元素 https://stackoverflow.com/q/12663981/1026459)指出如果一个元素有一个 id,那么您可以根据该 id 通过变量名来访问它。这引起了我的兴趣,因为我在使用 Visual Studio 2010 进行开发时看到了这个可用的变量。出于好奇,我做了一些测试,结果发现:document.getElementById()
仍然比使用变量名更快。于是,我开始尝试透过窗户往外看,猜想它一定在里面。window["idName"]
,在调试中,并且与console.log(window)
并且无法找到变量实际存储的位置。
当一个元素在 html 中定义为<div id="foo">
它可以在 javascript 中通过变量使用foo
(我不建议使用这个,这是不好的做法)。该变量存储在哪里?
这是不标准的行为。它存储在哪里(以及是否存储)取决于实现。
Using Firefox 15
在 Linux 上,我必须深入 2 个原型对象才能找到实际对象。我在 StackOverflow 页面上运行了这段代码,并得到了true
result.
Object.getPrototypeOf(Object.getPrototypeOf(window)).hasOwnProperty("hlogo");
在 Linux 上的 Chrome 中,它是一层深。
Object.getPrototypeOf(window).hasOwnProperty("hlogo");
事实上,我很惊讶在 Firefox 中看到它,但既然 Chrome 遵循了微软的模式,我想 Firefox 一定也觉得有必要效仿。
如果您不知道原型链有多深,您可以运行一个循环,并将不同的对象添加到数组中,或者仅使用循环中的对象。
var protos = [],
obj = window;
while (Object.getPrototypeOf(obj) !== null) {
obj = Object.getPrototypeOf(obj);
protos.push(obj);
}
alert("The object had " + protos.length + " prototype objects");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)