JavaScript組み込みオブジェクトで定義されている関数が多数あります。例えばString
はslice()
、split()
とArray
join()
を持っており、彼らはその後、すべての配列のように、しかしjoin()
方法JavaScriptの組み込みオブジェクトのメソッドのコピーを常に保持する必要がありますか?
を失うことになる、単に
Array.prototype.join = 'test'
を使用して(それが悪い習慣ですが)無効にすることができますがありますオープンソースプロジェクトの開発者は、プロトタイプへのこの潜在的な変化をどのように見なければなりませんか?これらの機能を多かれ少なかれ使用していくらかの機能を実現する可能性が非常に高いため、問題になります。
jQueryのでは、それは、これらの方法のいくつかのコピーを保持します:
しかし、唯一の方法のいくつかは、あなたがjQueryののソースコードを読めばあなたには、いくつかに気づくでしょう、安全に保管されている
String
メソッドはStringオブジェクトで直接呼び出されます。
もちろん、ビルトインJavaScriptオブジェクトのすべてのメソッドのコピーを保持することはできますが、それは面倒です。実際、実行タイミングの問題にもなります。プロトタイプが変更される前にプログラムが実行されていれば問題ありません。しかし、逆の場合は失敗します。だから私は、jQueryや他のライブラリが何らかのメソッドのコピーを保持することを決めるとき、その決定の背後にある彼らの哲学は何かを知ることにもっと興味がありますか?
ありがとうございます。
[なぜネイティブオブジェクトを拡張するのが悪いのですか?](http://stackoverflow.com/questions/14034180/why-is-extending-native-objects-a-bad-practice) – CBroe
なぜあなたはそのようなプロトタイプを妨害する必要がある。他にもいくつかの方法があります。このように設定する前にチェックをする方が良いとは限りません。 – Jai
私が協力していたプログラマーに冗談を言いたいのであれば、元のプロトタイプを上書きするだけです。 – Nonemoticoner