Подтвердить что ты не робот

JavaScript: Что такое свойство Expando?

Я столкнулся с этим свойством, когда читал об утечках памяти JavaScript. Мне сообщили, что это свойство поддерживается только в Internet Explorer и отвечает за круглые ссылки.

Я попытался проверить и обнаружил, что это свойство недоступно ни в одном из браузеров. Может ли кто-нибудь дать представление об этом свойстве и как он связан с утечками памяти?

4b9b3361

Ответ 1

Я пришел сюда с тем же вопросом, также после прочтения статьи о утечке памяти. Я все еще был в замешательстве после прочтения ответов здесь, поэтому я решил поделиться своими результатами после нескольких исследований.

В 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

См. также fooobar.com/questions/113674/....

Ответ 2

Проще говоря, свойство 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

Более подробную информацию можно найти в Понимание и устранение шаблонов утечки Internet Explorer

Ответ 3

Я думаю, вы имеете в виду expando Property... с пробелом, ссылаясь на expando свойство объектов. Это:

устанавливает или возвращает значение, указывающее, могут ли быть созданы произвольные переменные внутри объекта.