Добавлена ​​функция в массив в JavaScript, как сохранить функцию вне для ... в? - PullRequest
1 голос
/ 04 февраля 2011

Я расширил Array для поддержки indexOf в IE, используя эту функцию JavaScript из Mozilla MDC .

К сожалению, при использовании for ... в синтаксисе для итерации по массиву цикл останавливаетсяна indexOf вместо просто числовых индексов.

Можно ли сохранить indexOf вне для ... в синтаксисе в Internet Explorer (это происходит в Chrome)?Что делает свойство Array.length и другие функции Array настолько особенными, что цикл for ... in пропускает их?

Я знаю, что переключение на стандартный синтаксис - это решение, но я бы предпочел для...в починке.

1 Ответ

1 голос
/ 04 февраля 2011

Помимо отказа от обозначения for ... in для массивов, попробуйте применить защитное программирование:
При использовании синтаксиса for (... in ...) в ES3 (современные браузеры) всегда рекомендуется его фильтровать:

var member;
for (member in someObject) {
  if (someObject.hasOwnProperty(member)) {
    someObject[member]; // do whatever you want with it
  }
}

Другой код может также обогатить некоторый прототип объекта.

...