hasOwnProperty и ECMAScript 5 строгий режим - PullRequest
3 голосов
/ 10 января 2011

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

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

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

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

спасибо.

1 Ответ

3 голосов
/ 10 января 2011

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

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

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

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

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

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

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