hasOwnProperty и ECMAScript 5 строгий режим

Мне любопытно: кто-нибудь знает, почему спецификация ECMAScript5 не ужесточила свойства предопределенного прототипа объекта в строгом режиме? Например, кажется, что нет информации относительно способа определения hasOwnProperty. Я попытался переопределить его (и проверил код в бета-версии FF4), и мне удалось сойти с рук. Если я не сделал ничего плохого, то это означает, что любой может переопределить свойство Object.prototype.hasOwnProperty и действительно испортить весь код, который зависит от него, для рабочего свойства...

мысли по этому поводу?

РЕДАКТИРОВАТЬ: немного больше информации, как я копаться в спецификации...

Как я добавил в комментарии ниже, вы не можете реально изменить Object.prototype в строгом режиме из-за примененных к нему метаданных (Writable, Enumerable и Configurable все установлены в false) и бета-версии FF 4 (которую я использую для запуска моих тестов) генерирует исключение.

Благодарю.

1 ответ

А также? Я могу убить все на Object.prototype если бы я захотел, не включайте такой код в ваш проект / сайт, не делайте что-то лучше, найдите тех идиотов, которые делают такие вещи, и обязательно пинайте их по яйцам.

Я имею в виду, я даже могу испортить любую данную программу Python (2.x), выполнив True = False,

Вы никогда не сможете защитить от идиотов. Никогда. Попробуйте обучать или избегать их.

РЕДАКТИРОВАТЬ

Чтобы прояснить невозможность этого, если вы инкапсулируете свой скрипт в анонимную оболочку (как следует делать, если вы используете его с другим кодом), "use strict" будет локальным для вашего кода.

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

Другие вопросы по тегам