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. イジェクトが推奨されないのはなぜですか? 1. eject を実行した後、どのような変化があり...
サーバー: Ubuntu Server 16.04 LSSクライアント: Ubuntu 16.04 ...
1. レンダリングを見る進むを選択: 後方を選択: コードは次のとおりです(例): <テンプレ...
キーボード文字英語`バッククォート〜チルダ!叫ぶ@で#ナンバーサイン$ドル%パーセント^キャレット&...
MSIインストールパッケージを使用してインストールするご使用のオペレーティング システムに応じて、対...
Flex レイアウトを使用すると、水平に配置すると、すべての子項目の高さが同じになることがわかります...
概要Docker 自体の現在のデフォルト ネットワークについては、単一ホスト上の異なる Docker...
1. InnoDBストレージエンジンを使用する必要がありますCPU と IO のパフォーマンスが向上...
<br />私が住んでいる地域では、コミュニティに出入りする車両を管理するために、コミュ...
前回の記事では、Oracle でピボット テーブルを実装するいくつかの方法を紹介しました。今日は、同...
MySQL 8 の公式バージョン 8.0.11 がリリースされました。公式発表によると、MySQL ...
コードをコピーコードは次のとおりです。 <div class="content&qu...
序文最近、仕事で問題が発生しました。 Centos7 システムでは MySQL にリモート接続できな...
この記事では、Windows Server オペレーティング システムのインストールと企業でのそのア...
実際のプロジェクト開発プロセスでは、ページがサーバーにアップロードされます。サーバーへの負荷を軽減し...