首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript:什么是Expando属性?

JavaScript:什么是Expando属性?
EN

Stack Overflow用户
提问于 2010-08-20 16:28:35
回答 3查看 7K关注 0票数 14

我在阅读有关JavaScript内存泄漏的文章时发现了这个属性。我被告知,此属性仅在Internet Explorer中受支持,并负责循环引用。

我试着检查,发现这个属性在任何浏览器中都不可用。谁能提供一些关于这个属性的见解,以及它是如何与内存泄漏联系在一起的?

EN

回答 3

Stack Overflow用户

发布于 2013-03-02 10:19:18

我带着同样的问题来到这里,也是在读了一篇关于内存泄漏的文章之后。在阅读了这里的答案后,我仍然感到困惑,所以我想在进一步研究之后分享我的发现。

在JavaScript中,要知道像.expandoProperty这样的东西是否是语言的一部分,或者有人聪明地使用属性名称,这可能会让人感到困惑。

内存泄漏文章中的obj.expandoProperty也可以是obj.foo。他们试图通过使用".expandoProperty“来传达的观点是,属性最初并不是作为对象的一部分而存在的。

代码语言:javascript
复制
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

票数 13
EN

Stack Overflow用户

发布于 2010-08-20 16:35:55

简而言之,expando属性是一个最初并不存在的属性。在Internet Explorer中,如果为DOM元素创建这样的属性,可能会导致内存泄漏。下面是一个示例:

代码语言:javascript
复制
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

票数 7
EN

Stack Overflow用户

发布于 2010-08-20 16:31:33

我想你是指吧。使用空格,引用对象的expando属性。It:

设置或检索一个值,该值指示是否可以在对象中创建任意变量。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3529298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档