ES6 以外のコードで継承を実装する主流の方法は、次のように分けられます。 構造継承(callで実装)成し遂げる 関数Super(age){ this.age = 年齢; this.say = 関数(){ コンソールログ(this.age) } } 関数 Child(名前,年齢){ Super.call(これ、年齢) this.name = 名前; } var child = 新しいChild("min",23) console.log(Super の子インスタンス); // false console.log(child instanceof Child); // true アドバンテージ (1)多重継承が可能(複数の親クラスオブジェクトを呼び出す) 欠点 (1)継承できるのは親クラスのインスタンスのプロパティとメソッドのみであり、プロトタイプのプロパティとメソッドは継承できない。 プロトタイプチェーン継承(プロトタイプチェーンの助けを借りて実装)成し遂げる 関数Super(){ this.getName = 関数(){ console.log(この名前) } } 関数Child(名前){ this.name = 名前; } Child.prototype = new Super(); // ここで構築パラメータを渡すことができます Child.prototype.constructor = Child; var child = new Child("min"); console.log(子インスタンスSuper); // true console.log(child instanceof Child); // true console.log(child.constructor); // 子 アドバンテージ 欠点 複合継承(構築継承 + プロトタイプチェーン継承)成し遂げる 関数Super(age){ this.age = 年齢; this.getAge = 関数(){ コンソールにログ出力します。 } } 関数 Child(名前,年齢){ Super.call(これ、年齢) this.name = 名前; } Child.prototype = 新しいSuper(1); Child.prototype.constructor = Child; var child = new Child("min",23); console.log(子インスタンスSuper); // true console.log(child instanceof Child); // true console.log(child.constructor); // 子 アドバンテージ 欠点 寄生的な構成継承成し遂げる 関数Super(age){ this.age = 年齢; this.getAge = 関数(){ コンソールログ(this.age) } } 関数 Child(名前,年齢){ Super.call(これ、年齢) this.name = 名前; } (関数(){ 関数コピー(){} Copy.prototype = Super.prototype; Child.prototype = 新しいコピー(); })() Child.prototype.constructor = Child; var child = new Child("min",23); 注: Child.prototype = Super.prototype を直接使用しないのはなぜですか? アドバンテージ 追加: (Object.create) を使用成し遂げる 関数Super(age){ this.age = 年齢; this.getAge = 関数(){ コンソールログ(this.age) } } 関数 Child(名前,年齢){ Super.call(これ、年齢) this.name = 名前; } Child.prototype = Object.create(Super.prototype,{ コンストラクター:{ // コンストラクターは値を修復します: 子 } }) var child = new Child("min",23); console.log(子インスタンスSuper); // true console.log(child instanceof Child); // true console.log(child.constructor); // 子 上記は、JavaScript で継承を実装するいくつかの方法の詳細です。JavaScript 実装継承の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: MACOS で MySQL ルートパスワードを忘れた場合の解決策
1 問題の説明Vue3 の統合 API は、defineComponent やその他の関数が認識でき...
MySQL をインストールする必要があるため、インストール手順を以下のように記録します。 自分なり...
進捗バーがスムーズではないフロントエンドを学ぶ学生のほとんどは、オーディオプレーヤーやビデオプレーヤ...
目次1. トリガーの紹介1. トリガーとは何ですか? 2. トリガーの特徴2. トリガーを作成する1...
序文:サンドボックスといえば、私たちの頭には反射的に上の写真が思い浮かび、すぐに興味がわいてくるかも...
最近、NestJs フレームワークを学び始めました。学習コストは他のフレームワークよりもはるかに高く...
この記事ではMySQL 5.7.21のインストールと設定方法を記録しています。具体的な内容は以下のと...
最近、会社でたまたま生放送をしていたのですが、今日は私が遭遇した落とし穴を記録します。会社のサーバー...
目次1. 手ぶれ補正機能2. Vueでdebouceの手ぶれ補正機能を使用する1. 手ぶれ補正機能2...
ここで商品テーブルを作成しました。その中のデータを見てみましょう。 mysql> 商品から *...
目次グローバル変数として可変ホイスト一時的なデッドゾーンブロックスコープ重複したステートメント宣言さ...
MySQL の全体的なアーキテクチャは、サーバー層とストレージ エンジン層に分かれています。サーバー...
この記事では、MySQL 8.0.16 Win10 zip版のインストールと設定のグラフィックチュー...
この記事では、Vueの具体的なコードを共有して、簡単なショッピングカートを実装します。具体的な内容は...
毎回インストールチュートリアルを探すのは面倒なので、後で確認できるように手順をバックアップします。解...