ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript プロトタイプベースのコードを編成するときに「this」の値を維持するにはどうすればよいですか?

JavaScript プロトタイプベースのコードを編成するときに「this」の値を維持するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-30 12:07:12557ブラウズ

How Can I Maintain the

オブジェクト指向 JavaScript のコード構成と「this」値

JavaScript プロトタイプベースのコードを構成する場合、共通の課題が発生します。オブジェクト参照と継承を保持します。 next()、prev()、bindControls() などのさまざまな関数を備えた Carousel クラスがあるとします。コードの構成を強化するには、

Carousel.prototype.controls = {
   next: function () { ... } , 
   prev: function() { ... },
   bindControls: function () { .. }
};

のようにこれらの関数をコントロール プロパティの下にグループ化したいと考えます。ただし、このアプローチでは、オブジェクトのプロパティやメソッドにアクセスするために重要な「this」値が中断されます。元のコンテキストで "this" 値を維持するには、次の解決策を採用できます。

Controls コンストラクター内で制御可能なオブジェクトへの参照を保持する Controls クラスを作成します。 next() などのアクションを処理するコントロールのメソッドは、参照を使用して制御可能なオブジェクト内の適切なメソッドを呼び出します。

var Controls = function (controllable_object) {
    this.ref = controllable_object;
};
Controls.prototype.next = function () {
    this.ref.foo();
}
// ..

var Carousel = function () {
    this.controls = new Controls(this);
};
// ..

これにより継承が確保され、コントロールの実装をオーバーライドできるようになります。依存性注入のようなメカニズム。

以上がJavaScript プロトタイプベースのコードを編成するときに「this」の値を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。