0

Object.prototypeの拡張には、落とし穴がたくさんあります。他の標準的なJavascriptプロトタイプを拡張するときに何かありますか:String.prototype、Array.prototype、Function.prototype?

前もって感謝します。

[編集]関連:Object.prototypeを拡張する際の落とし穴は何ですか?

4

2 に答える 2

0
  1. 将来のブラウザー バージョンがArray.prototype.remove(EcmaScript 標準へのアップグレードのため、または独自の意志によって) 実装する場合、それらの実装はカスタム バージョンによってオーバーライドされます。これは効率が低下するだけでなく、ブラウザー エンジンの内部を操作することはできません。メソッド最適化のサービス) しかし、より重要なことに、それらは異なる、非標準的な結果をもたらす可能性があります。

  2. ネイティブを拡張すると、オブジェクトの反復サイクルが混乱します。引数は次のようになります: for in ループは、オブジェクトのプロトタイプ チェーン内のすべての列挙可能なプロパティを参照するため、カスタム ネイティブ プロパティがそのような反復に予期せず含まれます。

  3. Object.prototype の子孫 (つまり、プロトタイプが明示的に null でないすべてのオブジェクト) は、たまたま同じ名前のプロパティを定義すると、拡張プロパティにアクセスできなくなります。

http://javascriptweblog.wordpress.com/2011/12/05/extending-javascript-natives/

于 2012-08-16T14:45:35.137 に答える
-1

本当に役に立ちました

Javascript でのネイティブの拡張

[編集] これは、できることを示すだけでなく、落とし穴を回避してそれを行う方法を示す必要があります。:)

では、ネイティブの拡張は大丈夫ですか?

ネイティブ プロトタイプを拡張しない理由をいくつか説明しました。あなたは他の人を知っているかもしれません。これらの懸念事項のそれぞれが、計画されている拡張機能によって対処されるかどうか、および拡張機能がコードベースに力と明快さを追加するかどうかを決定する必要があります。

于 2012-08-16T14:39:40.283 に答える