我在阅读有关JavaScript内存泄漏的文章时发现了这个属性。我被告知,此属性仅在Internet Explorer中受支持,并负责循环引用。
我试着检查,发现这个属性在任何浏览器中都不可用。谁能提供一些关于这个属性的见解,以及它是如何与内存泄漏联系在一起的?
发布于 2013-03-02 10:19:18
我带着同样的问题来到这里,也是在读了一篇关于内存泄漏的文章之后。在阅读了这里的答案后,我仍然感到困惑,所以我想在进一步研究之后分享我的发现。
在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添加到混合中:.expando是一个仅限IE的属性,它“设置或检索一个值,该值指示是否可以在对象中创建任意变量”。MSDN article
另请参见generalized discussion of expando properties on StackOverflow here。
发布于 2010-08-20 16:35:55
简而言之,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有关更多信息,请访问Understanding and Solving Internet Explorer Leak Patterns
发布于 2010-08-20 16:31:33
我想你是指吧。使用空格,引用对象的expando属性。It:
设置或检索一个值,该值指示是否可以在对象中创建任意变量。
https://stackoverflow.com/questions/3529298
复制相似问题