Object.prototypeの拡張には、落とし穴がたくさんあります。他の標準的なJavascriptプロトタイプを拡張するときに何かありますか:String.prototype、Array.prototype、Function.prototype?
前もって感謝します。
Object.prototypeの拡張には、落とし穴がたくさんあります。他の標準的なJavascriptプロトタイプを拡張するときに何かありますか:String.prototype、Array.prototype、Function.prototype?
前もって感謝します。
将来のブラウザー バージョンが
Array.prototype.remove
(EcmaScript 標準へのアップグレードのため、または独自の意志によって) 実装する場合、それらの実装はカスタム バージョンによってオーバーライドされます。これは効率が低下するだけでなく、ブラウザー エンジンの内部を操作することはできません。メソッド最適化のサービス) しかし、より重要なことに、それらは異なる、非標準的な結果をもたらす可能性があります。ネイティブを拡張すると、オブジェクトの反復サイクルが混乱します。引数は次のようになります: for in ループは、オブジェクトのプロトタイプ チェーン内のすべての列挙可能なプロパティを参照するため、カスタム ネイティブ プロパティがそのような反復に予期せず含まれます。
Object.prototype の子孫 (つまり、プロトタイプが明示的に null でないすべてのオブジェクト) は、たまたま同じ名前のプロパティを定義すると、拡張プロパティにアクセスできなくなります。
http://javascriptweblog.wordpress.com/2011/12/05/extending-javascript-natives/
本当に役に立ちました
[編集] これは、できることを示すだけでなく、落とし穴を回避してそれを行う方法を示す必要があります。:)
では、ネイティブの拡張は大丈夫ですか?
ネイティブ プロトタイプを拡張しない理由をいくつか説明しました。あなたは他の人を知っているかもしれません。これらの懸念事項のそれぞれが、計画されている拡張機能によって対処されるかどうか、および拡張機能がコードベースに力と明快さを追加するかどうかを決定する必要があります。