私は好奇心が強い:ECMAScript5仕様がstrictモードで複数の定義済みオブジェクトのプロトタイプのプロパティを締めていない理由を誰もが知っていますか?たとえば、hasOwnPropertyの定義方法に関する情報がないようです。私はそれを再定義しようとしました(そして、FF4ベータ版のコードをテストしました)、私はこれを取り除くことができました。私は何も悪いことをしなかった場合、これは誰もがはまだ ...この上hasOwnPropertyをとECMAScriptの5 strictモード
考えをObject.prototype.hasOwnPropertyプロパティを再定義し、実際に作業性のためにそれに依存しているすべてのコードをネジことができることを意味しますか?
編集:私はスペックによって掘ると、もう少し情報...
私は以下のコメントを入れてきたように、あなたが本当にによりそのメタデータにstrictモードでのObject.prototypeを変更することはできません(Writable、Enumerable、Configurableがすべてfalseに設定されています)、FF4ベータ(テストを実行するために使用しています)が例外を生成します。
ありがとうございました。
質問は次のとおりです。組み込みオブジェクトはデフォルトで封印されていますか?私はまだES5を掘っていないので、その質問に対する答えはわかりません。 –
@ ime Vidasいいえ、組み込みオブジェクトはデフォルトでは封印されません。彼らの[Extensible]は 'true'に設定されているので、簡単にプロパティを追加することができます(15章を参照)。 AIUIの目的は、ESオブジェクトモデルを柔軟に保つことでした。絶対に重要な部分をロックするだけでした(グローバルな '未定義'、 'NaN'と' Infinity'プロパティは書き込み不可能、非設定可能です:)) – kangax