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. Antデザインビュー1. 公式ウェブサイトアドレス2. 使い方3.電子書籍テーブルを表示す...
ユーザーグループLinux では、すべてのユーザーはグループに属する必要があり、Linux には次の...
目次1. ルーティングとページジャンプ2. インターフェース要約する1. ルーティングとページジャン...
質問特定の MySQL 接続について、それがどのクライアント プロセスからのものであるかをどのように...
序文Linux でショートカットを作成すると、アプリケーションをより速く開くことができます。ここで、...
cpanel 管理バックエンドを開き、「詳細」オプションの下に「Clock Guardian Job...
CSS には多くの属性があります。特に複数の値を設定する必要がある属性は、長期間使用しないと忘れられ...
昨日はデータベースへの接続に問題はありませんでしたが、今日はデータベースへの接続時にこのエラーが報告...
シナリオ最大 10000 要素のリストを正しくレンダリングする方法。無限ドロップダウン読み込みテクノ...
境界線のスタイルborder-style プロパティは、表示する境界線の種類を指定します。 bord...
この CSS リセットは、Eric Meyers の CSS リセットに基づいて変更されており、特に...
1 MySQLの自動コミット設定MySQL はデフォルトで自動的にコミットします。つまり、各 DML...
実践こそが真実をテストする唯一の方法です。この記事では、インデックスの全体的な使用法についてのみ説明...
Dockerの機能1) すぐに始められるユーザーがプログラムを「Docker 化」するには、わずか数...
tomcatの設定1. 実行構成をクリック 2. tomcat localを選択 3. tomcat...