JavaScript インスタンス オブジェクトでプロトタイプ メソッドをオーバーライドする方法の詳細

JavaScript インスタンス オブジェクトでプロトタイプ メソッドをオーバーライドする方法の詳細

JavaScriptでは、通常、次のコードのようにクラスを簡単に定義できます。

var サンプル = 関数() {
    // コンストラクタコードはここ 
}

sample.prototype.func1 = 関数() {
    // func1 コードはここ
}

sample.prototype.func2 = 関数() {
    // ここで func2 コード
}

/* ここにさらにサンプルのプロトタイプ関数があります... */

次に、次のコードを使用してプロトタイプ メソッドをインスタンス化し、アクセスします。

var sampleInstance = 新しいサンプル();
サンプルインスタンス.func1();
サンプルインスタンス.func2();
// サンプルオブジェクトのプロトタイプ関数をさらに呼び出す


しかし、元のsampleオブジェクトを破壊せずにプロトタイプ メソッドの 1 つを書き換えたい場合は、どうすればよいでしょうか。最も簡単な方法は、 sampleを継承する別のクラスを構築し、継承したクラスのプロトタイプ メソッドで基本クラス メソッドを次のように書き換えることです。

var サブサンプル = 関数() {
    // コンストラクタコードはここ
}

// サンプルから継承
subSample.prototype = 新しいサンプル();
subSample.prototype.fun1 = 関数() {
    // サンプルの func1 を上書きする
}

ただし、継承クラスを構築せず、プロトタイプ メソッドを書き換える場合は、次のコードを直接使用できます。

var sampleInstance = 新しいサンプル();
サンプルインスタンス.func1 = 関数() {
    sample.prototype.fun1.call(this); // サンプルの func1 を呼び出す
    // sampleInstance.func1 のコードはここ
}


sampleインスタンス オブジェクトのfunc1メソッドを再定義し、そのプロトタイプ メソッドfunc1にアクセスして、追加のコードを追加しました。このようにして、派生クラスを作成したり、 sampleのプロトタイプ メソッドを破棄したりすることなく、 sampleのプロトタイプ メソッドを拡張します。

JavaScriptインスタンス オブジェクトでのプロトタイプ メソッドのオーバーライドの詳細に関するこの記事はこれで終わりです。JavaScript インスタンス オブジェクトでのプロトタイプJavaScriptのオーバーライドの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScriptは組み込みオブジェクトのプロトタイプメソッド実装を追加します
  • JavaScriptのプロトタイプオブジェクトを徹底的に理解しましょう
  • js のプロトタイプ、プロトタイプ オブジェクト、プロトタイプ チェーンの包括的な分析
  • js でプロトタイプオブジェクトを使用する際の注意点

<<:  XHTML 入門チュートリアル: フォーム タグ

>>:  Dockerでの接続例外中のエラーを解決する

推薦する

MySQL での置換例の詳細な説明

MySQL での置換例の詳細な説明replace into は insert と似ていますが、rep...

HTMLを圧縮しない理由はいくつかある

理由は簡単です。 HTML ドキュメントでは、複数の空白文字は 1 つの空白文字と同等です。つまり、...

ブートストラップテーブルの使い方のまとめ

この記事では、bootstrapテーブルの使い方を参考までに紹介します。具体的な内容は次のとおりです...

スタイル属性 (element.style) で定義されたインライン スタイルを削除する方法

Magento を頻繁に変更する場合、element.style に遭遇することがあります。 これは...

MySQL での select、distinct、limit の使用

目次1. はじめに2. 選択2.1 単一列のクエリ2.2 複数の列のクエリ2.3 すべての列をクエリ...

WeChatアプレットの手動および自動追跡の実装の詳細説明(Taro)

どの企業もユーザーベースを拡大したいのであれば、ユーザーの操作データを収集・分析する必要があり、その...

SQL ステートメント実行の詳細な説明 (MySQL アーキテクチャの概要 -> クエリ実行プロセス -> SQL 解析順序)

序文:私はずっと、SQL 文がどのように、どのような順序で実行されるのかを知りたいと思っていました。...

フロントエンドJavaScriptは関数のカリー化を完全に理解している

目次1. カレーとは何か2. カレーの用途3. カリー化ユーティリティ関数をカプセル化する方法 1....

この記事ではJavaScriptの基本であるディープコピーとシャローコピーについて説明します。

目次浅いコピーディープコピー補充する要約するコピー(クローン、複製などとも呼ばれる)ですが、ディープ...

Vue のレスポンシブ原則と双方向データの詳細な分析

応答性を実現するための object.defineProperty の理解observe/watch...

Sublime TextがUbuntuで中国語を入力できない問題の最も簡単な解決策

崇高なSublime Text はコード エディター (Sublime Text2 は有料ソフトウェ...

VMware マルチノード環境を構成する方法

このチュートリアルでは CentOS 7 64 ビットを使用します。各仮想マシンに 2GB のメモリ...

Linuxサービスの監視と運用および保守

目次1. psutilパッケージをインストールする次に、オペレーティングシステム内のすべてのサービス...

MySQLのREDOログ(リドゥログ)とロールバックログ(アンドゥログ)の詳しい説明

序文:前回の記事では、MySQL システムでよく使用されるログをいくつか説明しました。実は、トランザ...