ES6クラスの継承はextendsキーワードを使用するので、ES5ではどのように実装されますか?
ES5は、コンストラクターとプロトタイプオブジェクトの組み合わせを使用して継承をシミュレートするため、結合継承とも呼ばれます。
コアとなる原則:呼び出し()を通じて親コンストラクターを借用し、親タイプのthisをサブタイプのthisにポイントします。
この継承は、インスタンスコンストラクターを作成するために子コンストラクターが呼び出されたときに、子コンストラクターで親コンストラクターを実際に呼び出しているため、親コンストラクターのメンバーを取得し、呼び出された親コンストラクターのthisを変更できますサブ関数をポイントするだけで、メンバーはサブ関数に継承されます。
つまり、call()を使用して子コンストラクターで親コンストラクターを呼び出して継承を実現します。親コンストラクターでこれを子関数でこれに変更することを忘れないでください。
function Father(uname、age){ this.uname = uame; this.age =年齢; } function Son(uname、age){ Father.call(this); }
プロトタイプオブジェクトの継承メソッドを借用する
Son.prototype = new father(); //父親のプロトタイプオブジェクトのメソッドにはプロトタイプチェーンからアクセスできるため Son.prototype.constructor = Son; //上記の割り当て操作により、Sonのコンストラクターは父親を指すようになります