alt*_*ter 13 javascript memory-leaks
我在阅读有关JavaScript内存泄漏时遇到过这个属性.我被告知此属性仅在Internet Explorer中受支持,并负责循环引用.
我试图检查并发现此属性在任何浏览器中都不可用.任何人都可以提供有关此属性的任何见解以及它如何与内存泄漏相关联?
Gre*_*ham 12
在阅读了一篇关于内存泄漏的文章后,我也带着同样的问题来到这里.我在阅读这里的答案后仍然感到困惑,所以我想在经过一些研究之后我会分享我的发现.
在JavaScript中,如果知道某些东西.expandoProperty是语言的一部分还是某个人对属性名称很聪明,那么这可能会令人困惑.
obj.expandoProperty在内存泄漏文章中也可以obj.foo.他们试图通过使用".expandoProperty"来解决这个问题,即该属性最初并不作为对象的一部分存在.
var obj = {myProp: ''};
obj.myProp = 'foo'; //myProp is not an expando property
obj.myNewProp = 'bar'; //myNewProp is an expando property
Run Code Online (Sandbox Code Playgroud)
添加到混合:.expando是一个仅IE的属性,"设置或检索一个值,指示是否可以在对象中创建任意变量." MSDN文章
另请参见StackOverflow上有关expando属性的一般性讨论.
简单地说,expando属性是最初不存在的属性.在Internet Explorer中,如果为DOM元素创建此类属性,则可能会导致内存泄漏.这是一个例子:
var div = document.getElementsByTagName('div')[0];
div.someProperty = true; // 'someProperty' is an expando property which may introduce a memory leak in IE
Run Code Online (Sandbox Code Playgroud)
可以在了解和解决Internet Explorer泄漏模式中找到更多信息