【发布时间】:2011-12-12 14:48:56
【问题描述】:
我今天在想这个,我意识到我在这里没有清晰的画面。
以下是我认为正确的一些陈述(如果我错了,请纠正我):
- DOM 是 W3C 指定的接口集合。
- 在解析 HTML 源代码时,浏览器会创建一个 DOM 树,其中包含实现 DOM 接口的节点。
- ECMAScript 规范没有引用浏览器宿主对象(DOM、BOM、HTML5 API 等)。
- DOM 的实际实现方式取决于浏览器内部,并且可能在大多数浏览器中有所不同。
- 现代 JS 解释器使用 JIT 来提高代码性能并将其转换为字节码
当我打电话给document.getElementById('foo') 时,我很好奇幕后会发生什么。调用是否由解释器委托给浏览器本机代码,或者浏览器是否具有所有主机对象的 JS 实现?您知道他们对此进行的任何优化吗?
我阅读了this overview of browser internals,但它没有提及任何关于此的内容。有时间我会看一下Chrome和FF的源码,不过我想先在这里问一下。 :)
【问题讨论】:
-
真棒的问题,亚历克斯 ... +1 并喜欢!
-
好吧,为了说明,认为它当然与 Java 完全不同,可以访问 JavaScript ScriptEngine 的“执行上下文”,并且可以使任意 Java 对象对 JavaScript 可见。跨语言接口只是来回桥接函数调用,在两个方向上执行一些必要的类型转换。
标签: javascript dom browser