3

私は興味があります: ECMAScript5 仕様が厳密モードで事前定義されたオブジェクト プロトタイプのプロパティを強化していない理由を知っている人はいますか? たとえば、hasOwnProperty の定義方法に関する情報はないようです。私はそれを再定義しようとしました (そして FF4 ベータ版でコードをテストしました) が、これでうまくいくことができました。私が何も悪いことをしていなければ、これは誰でもObject.prototype.hasOwnPropertyプロパティを再定義でき、プロパティを動作させるためにそれに依存するすべてのコードを実際に台無しにすることができることを意味します...

これについての考え?

編集:仕様を掘り下げると、もう少し情報が...

以下のコメントにあるように、Object.prototype に適用されたメタデータ (Writable、Enumerable、および Configurable がすべて false に設定されている) と FF 4 ベータ版 (これは私がテストを実行するために使用しています) は例外を生成します。

ありがとう。

4

1 に答える 1

3

と?必要に応じてすべてを殺すことができObject.prototypeます。そのようなコードをプロジェクト/サイトに含めないでください。より良いことをしないでください。そのようなことをしている馬鹿を見つけて、ボールでそれらをキックするようにしてください。

つまり、任意の Python (2.x) プログラムを台無しにすることもできTrue = Falseます。

馬鹿からは絶対に守れません。一度もない。それらを教育するか、避けるようにしてください。

編集

これが不可能であることを明確にするために、スクリプトを匿名ラッパーにカプセル化すると (他のコードで使用する場合と同様に)、はコード"use strict"に対してローカルになります。

つまり、邪悪なばかコードがそれ自体で厳密モードを使用しない場合、そして彼らはそうしません...完全なばかでない限り、ここでは話していませんが、それらは ES3 で実行され、あなたの美しい厳密性は使用されません。さえ存在しません。

于 2011-01-10T14:18:58.413 に答える