По сути, это потому, что расширение Object.prototype
нарушает идиому for ... in
.
В Javascript, если у вас есть объект:
var obj = { "foo": 0, "bar": 42 };
Вы можете перебрать его членов, выполнив:
for (var key in obj) {
// Do Something.
}
Расширение Object.prototype
приведет к тому, что расширенные члены будут присутствовать во всех экземплярах объекта, поэтому приведенный выше код будет перебирать больше ключей, чем foo
и bar
, с вероятными неожиданными результатами.
Вы можете найти скрипку, демонстрирующую проблему здесь .