1

プロトタイプで作成されたJavaScriptオブジェクトは、そのプロトタイプへの「ライブ」接続を維持するため、プロトタイプを変更すると、それから作成されたオブジェクトにも影響します。

新しく作成されたオブジェクトがプロトタイプからすべてをコピーして、それを忘れた場合、言語のセマンティクスははるかに単純になります。もちろん、実際の基礎となる実装はよりスマートになる可能性があります。

ライブ/動的接続のこの機能は、よく知られているJavaScriptライブラリまたはプログラムで実際に使用されていますか?

編集:私はJS継承システムに欠陥があることを提案していません。前述の機能の利点を理解したいだけです。

4

3 に答える 3

5

もちろん。この機能の最も顕著な使用法は、jQueryプロトタイプ(「プラグイン」と呼ばれる)へのメソッドの動的な追加であると思います。これは、として公開されjQuery.fnます。

「新しく作成されたオブジェクトがプロトタイプのプロパティをコピーしただけで、言語のセマンティクスがはるかに単純になる」とあなたが考える理由がわかりません。なぜそれが簡単なのですか?関数を使用して、そのメソッドでオブジェクトを作成できますがextend()、それは典型的な継承の概念を頭に浮かび上がらせます。

これは、Javascriptで非静的継承を持つコア機能の1つです。すでに生成されたインスタンスのプロトタイプオブジェクトを次のように変更すると便利です。

  • 上記のような機能の追加。プラグイン全体をロードできるのは、必要な場合のみです。
  • 機能を強化します(時々)。これは、非標準の動作を上書きするためによく使用されます
  • 本当にそれらを変更します(めったに)。これは、デフォルト設定のオブジェクトから継承する構成オブジェクトで使用できます。次に、デフォルト設定を変更できます。これらの設定は、すべてのインスタンスに適用されます(少なくとも、問題のプロパティを上書きしなかったインスタンスに適用されます)。
于 2012-05-15T22:44:47.587 に答える
0

最近の講演で、Brendan Eich は Javascript が「ターゲット」言語であり、Jquery や CoffeeScript などのライブラリをその上に記述できるようにすることを説明しています。プロトタイプの優れた例のためのゲーム フレームワーク

于 2012-05-15T22:49:18.790 に答える
0

このダイナミズムは、古いブラウザにパッチを適用するポリフィル ライブラリに存在します。Array.prototype.mapたとえば、Array.prototype.find. 例については、 https://github.com/paulmillr/es6-shim/を参照してください。

于 2015-03-11T12:12:30.730 に答える