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 ルートパスワードを忘れた場合の解決策
目次MySQL で現在の時刻を表現するにはどうすればよいでしょうか?結論は確認するピットMySQL ...
目次1. プロセスとスレッドの概念2. プロセス管理とは何ですか? 3. プロセス管理の役割4. L...
目次1. フィルター() 2. 各() 3. いくつか() 4. すべて() 5. 減らす() 6....
Arthas はあなたのために何ができるでしょうか? Arthas 、開発者に深く愛されている Al...
CHAR 型と VARCHAR 型は似ていますが、主に格納場所、末尾のスペース、取得方法が異なります...
Linux はますます多くのユーザーに愛されてきました。なぜ Linux はこれほど急速に発展し、い...
目次序文1. イベントとクリップボードを貼り付ける2. クリップボード内のコンテンツ形式3. HTM...
Linux 仮想マシン: VMware + Ubuntu 16.04.4 Windows ネイティブ...
この記事では、Gobangゲームを実装するためのキャンバスの具体的なコードを参考までに共有します。具...
1. MavenをダウンロードするMaven 公式サイト: http://maven.apache...
目次バインディングクラスインラインスタイルのバインディングバインディングクラス方法1:オブジェクト構...
1. まずテーブル作成ステートメントを見てみましょう テーブル学生を作成( sid int 主キー ...
デフォルトでは、コンテナ内のプロセスは root ユーザー権限で実行され、この root ユーザーは...
ほとんどの人はMySQLをコンパイルしてシステムディレクトリに置きますが、私のやり方はコンパイルした...
領事の基本概念サーバーモードとクライアントモードサーバー モードとクライアント モードは、consu...