Странная проблема с JSMock - PullRequest
1 голос
/ 19 июля 2010

Может кто-нибудь объяснить, что здесь происходит и как это исправить?Я использую JSMock и выполняю следующий код в spec.js:

for (var t in []) {
    alert(t)
}

... заставляет мой браузер предупреждать "eachIndexForJsMock" (когда он вообще не должен выполнять команду alert)).Это портит мои for each петли.Как мне это исправить?

1 Ответ

1 голос
/ 19 июля 2010

Проблема в том, что JSMock увеличивает объект Array.prototype .

Инструкция for-in предназначена для перечисления свойств объекта, для массивов и массивоподобных объектов 1 , всегда рекомендуется использовать итерацию цикл, например:

for (var i = 0; i < arr.length; i++) {
  //...
}

Вы должны избегать for-in на массивоподобных объектах, потому что:

  • Порядок итерации не гарантирован, индексы могут не посещаться в числовом порядке.
  • Унаследованные свойства также перечислены.

Смотри также:

[1] Под массивом Я имею в виду любой объект, который содержит свойства с последовательной нумерацией и свойство length.

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