在DOM中,Node
和Element
类型具有许多动态属性,例如Node.textContent
和Element.innerHTML
,它们返回节点内容的字符串表示。 / p>
DOM规范仅声明这些方法只是“返回”DOMStrings
,即string
。但是,他们当然没有说明何时以及如何分配和计算这些字符串。对于文本节点,实现可以清楚地直接返回其纯文本字符串内容。但Element
必须创建包含任何后代元素的标记和内容的新字符串。
据我所知,实现可以为这些字符串分配内存并在四个点计算它们的值:
Element
时Element
创建后的某个时间安排; Element
; Element
的字符串属性立即返回,但在需要时动态生成其值)。这些方法还可以确定何时释放字符串的内存。前两种技术实质上将字符串缓存在Element
对象中 - 它们创建了对Element
中字符串的引用,并且在Element
之前不会释放字符串。第三和第四种技术可能但不需要从Element
创建这样的引用;只要其他引用被释放,字符串的内存可能会在Element
之前很久就被释放。此外,实现可能会基于某种启发式使用两种,三种或所有这些可能性。
现代浏览器引擎使用哪些技术?对于任何类型的DOM操作和文本检索,这个问题在计算时间和内存分配方面都有明显的性能影响。但据我所知,这些属性的性能特征未知或未记录。