私は最近es5を読んでいますが、グローバルオブジェクトの一部の組み込みプロパティの[[configurable]]属性がtrueに設定されていることがわかります。つまり、これらのプロパティを削除できます。
例えば:
Array.prototypeオブジェクトのjoinメソッドには属性があります
{[[Writable]]:true, [[Enumerable]]: false, [[Configurable]]: true}
したがって、Arrayのjoinメソッドを簡単に削除できます。
delete Array.prototype.join;
alert([1,2,3].join);
アラートはundefined
、私のクロム17、Firefox 9、つまり10、つまりIE6に表示されます。
Chrome 15およびsafari 5.1.1では、[[configurable]]属性がtrueに設定され、削除結果もtrueに設定されていますが、最終結果はまだfunction(){[native code]}
です。これはバグのようで、クロムはそれを修正します。
以前は気づいていませんでした。私の意見では、ユーザーのコードの組み込み関数を削除することは危険であり、他のユーザーと作業するときに非常に多くのバグを引き起こします。