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, а ваша красивая строгость не делает ' даже не существует.