저는 궁금합니다. 왜 ECMAScript5 사양이 엄격 모드에서 미리 정의 된 객체 프로토 타입의 속성을 더 강화하지 않았는지 알고 있습니다. 예를 들어, hasOwnProperty가 정의되는 방식에 관한 정보가없는 것처럼 보입니다. FF4 베타 버전에서 코드를 다시 정의 해 보았습니다.이 문제를 해결할 수있었습니다. 내가 잘못 아무것도하지 않은 경우, 다음이 사람이 여전히 ...이에hasOwnProperty 및 ECMAScript 5 엄격 모드
생각을 Object.prototype.hasOwnProperty 속성을 재정의하고 정말 작업 속성에 대한 그것에 의존하는 모든 코드를 나사 수 있다는 것을 의미?
편집 : 나는 사양을 통해 발굴로 좀 더 정보 ... 나는 아래 코멘트에 넣어했듯이
, 당신은 정말 인해 메타 데이터에 엄격 모드에 Object.prototype에를 변경할 수없는 경우 (Writable, Enumerable 및 Configurable 모두 false로 설정 됨) 및 FF 4 베타 (테스트를 실행하는 데 사용함)에서 예외가 생성됩니다.
감사합니다.
질문 : 기본적으로 기본 제공 개체가 봉인되어 있습니까? 나는 아직 ES5를 파헤 치지 않았으므로 그 질문에 대한 답을 모른다. –
@ ime Vidas 아니요, 기본 제공 개체는 기본적으로 봉인되어 있지 않습니다. 그들의 [Extensible]]은 'true'로 설정되어 있으므로 쉽게 속성을 추가 할 수 있습니다 (15 절 참조). AIUI의 목적은 ES 객체 모델을 유연하게 유지하면서 절대적으로 중요한 부분을 잠그는 것입니다 (예 : 전역 '정의되지 않음', NaN 및 Infinity 속성은 쓰기 및 구성 불가능) :) – kangax