Я хочу проверить, является ли объект пустым: {}
. Обычно используется следующее:
function isEmpty(obj) {
for (var prop in obj) {
if (obj.hasOwnProperty(prop))
return false;
}
return true;
}
Но предположим, что прототип Object
был добавлен следующим образом:
Object.prototype.Foo = "bar";
Тесты:
alert(isEmpty({})); // true
Object.prototype.Foo = "bar";
alert({}.Foo); // "bar" oh no...
alert(isEmpty({})); // true ...**huh?!**
Я пытался уничтожить прототип объекта, изменить его конструктор и все подобные способы взлома. Ничего не помогло, но, возможно, я сделал это неправильно (вероятно).