ホームページ >ウェブフロントエンド >jsチュートリアル >「この」参照と継承を保持しながら JavaScript プロトタイプを整理するにはどうすればよいですか?

「この」参照と継承を保持しながら JavaScript プロトタイプを整理するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-23 00:58:11966ブラウズ

How Can I Organize JavaScript Prototypes While Preserving

保存された参照と継承による JavaScript プロトタイプの編成

JavaScript プロトタイプと継承を使用するときにコードを効果的に編成するには、損失に関する一般的な問題が発生します。カスタマイズされたプロトタイプの「this」値の。この問題の目的は、参照と継承を維持しながら、機能をネストされたオブジェクトに分割することでコードを整理することです。

提案された解決策:

この問題を解決する 1 つのアプローチは次のとおりです。プロトタイプ自体内に直接ネストするのではなく、問題の機能専用のクラスを作成します。

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

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

定義することでコントロールを別のクラスとして使用すると、「this」参照はカスタマイズされたプロトタイプ内でもそのまま残ります。ただし、このソリューションには、コントロールの実装をオーバーライドできないという制限があります。

依存関係挿入ソリューション:

コントロールの実装のオーバーライドを有効にするには、依存関係注入アプローチを使用できます。

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

var Carousel = function () {
    this.controllers = [];
};
Carousel.prototype.addController = function (controller) {
    this.controllers.push(controller);
};
// ..

var carousel = new Carousel();
carousel.addController(new Controls(carousel));

このソリューションは、動的追加とコントローラーの変更により、継承されたクラスの機能の選択的なオーバーライドが可能になります。

以上が「この」参照と継承を保持しながら JavaScript プロトタイプを整理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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