私はAJAX対応のasp.netアプリケーションで作業していました。 は、私はちょうどこのソリューションは、私のために働いたArray.prototypeにカスタム関数を追加する
Array.prototype.doSomething = function(){
...
}
LIKE「きれい」な方法で再利用できるコードであること、Array.prototypeをするためにいくつかのメソッドを追加しました。
しかし、私はそれがページ全体での作業テストしてみたとき、私は問題を抱えていた。.. は、我々はいくつかのカスタムAJAXエクステンダを持っていた、と彼らは予想外のように動作し始めた:表示されたいくつかのコントロールは、その内容や値の周りに「未定義します」 。
何が原因なのでしょうか?スタンドアットオブジェクトのプロトタイプを修正することについて何か不足していますか?
注:Arrayのプロトタイプを変更するとエラーが発生することは間違いありません。 IEとのみ互換性があります。
"for(x in y)"構文は、オブジェクトのメンバーを反復するためのものだと思います。配列のインデックスベースの反復の場合、私はそれが適切だとは思わない。ただし、ページ上の他のコードを妨害することについてのあなたの要点は有効です。特に、サードパーティのライブラリがこのようにfor-inを使用している場合は有効です。 – harto
はい、その逆は真です - いくつかのn00bが配列プロトタイプを変更した場合、for..inを避けるべきですし、n00bの一部がfor..inを配列に使用した場合にArrayプロトタイプを変更しないでください。 ;) – thomasrutter
最近の_right_は、Object.defineProperty(Array.prototype、 'method'、...)を使って新しいメソッド_non-enumerable_を作ることです。 – Alnitak