Мне любопытно: кто-нибудь знает, почему спецификация ECMAScript5 не ужесточила свойства предопределенного прототипа объекта в строгом режиме? Например, кажется, что нет информации о том, как определяется hasOwnProperty. Я попытался переопределить его (и протестировал код в бета-версии FF4), и мне это сошло с рук. Если я не сделал ничего плохого, то это означает, что любой может до сих пор переопределить свойство Object.prototype.hasOwnProperty и реально запороть весь код, который полагается на него для рабочего свойства...
мысли по этому поводу?
РЕДАКТИРОВАТЬ: немного больше информации, когда я копаюсь в спецификации...
Как я уже сказал в комментарии ниже, вы не можете изменить Object.prototype в строгом режиме из-за примененных к нему метаданных (для Writable, Enumerable и Configurable установлено значение false) и бета-версии FF 4 (которую я использую для запуска своих тестов) генерирует исключение.
Благодарю.
true
, поэтому вы можете легко добавлять к ним свойства (см. раздел 15). AIUI, цель состояла в том, чтобы сохранить гибкость объектной модели ES, заблокировав только абсолютно важные части (например, сделать глобальные свойстваundefined
,NaN
иInfinity
недоступными для записи и настройки :)) - person kangax   schedule 14.01.2011