Перечисление свойств IE8 замененных встроенных свойств (например, `toString`) - PullRequest
2 голосов
/ 10 сентября 2011

У меня возникла очень странная проблема с JS-движком IE8 (возможно, и с предыдущими версиями, но НЕ с IE9 в режиме IE8, так как движок JS не отступает).Упрощенный пример:

var foo = { toString : 42, x : 22 };
for(var n in foo){ 
    console.log(n)
}

// result: "x"

Другими словами, свойство toString никогда не перечисляется.И valueOf, hasOwnProperty и т. Д. ... или var x = 5; x.toFixed = 42;

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

Мой вопрос - Кто-нибудь знает какой-нибудь способ получить к ним доступ?!?Мне нужно, потому что я прохожу прототип объекта, а функция toString не поднимается.

1 Ответ

2 голосов
/ 16 декабря 2011

Итак, поведение, которое вы испытываете в IE, - это так называемая «ошибка JScript DontEnum», которая существует в IE8 и ниже.

В IE <9 JScript пропустит любое свойство в любом объекте, где есть свойство с таким же именем в цепочке прототипов объекта с атрибутом DontEnum. </p>

Источник: https://developer.mozilla.org/en/ECMAScript_DontEnum_attribute#JScript_DontEnum_Bug

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...