理由: 派生コンストラクターは新しい this オブジェクトを作成しません、つまり、サブクラスには独自の this はなく、基底クラス (親クラス) によって super() を通じて作成された this オブジェクトのみが含まれます。派生クラスはこれを使用して、基本クラスと同様にオブジェクト プロパティを生成できます。
このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。
ES6 クラスの継承を学習する際によく言及される重要なポイント
サブクラス SubClass が親クラス SuperClass のコンストラクター コンストラクターを継承する場合、次の 2 つの要件があります。
this”この概念
function Super(name) { this.name = name; SuperFactory.prototype.sayHi = function () { console.log("Hi"); } } let super = new Super("peter");//通过new创建了新的对象,Super()中的this即指向这个对象
派生コンストラクターは、新しい this<span style="background-color:#ffd900;"></span>
オブジェクト (または this が Object# を指す) を作成しません。 <span style="background-color:#ffd900;"></span>(ここで新しいキーワードの動作を確認できます
##)、いわゆる「サブクラスには独自の this がありません」です。super()
<span style="background-color:#ffd900;"> 基底クラスによってこのオブジェクトが作成された後のみ </span>、派生クラスはこれを使用して基底クラスと同様に生成できます。
class SuperClass { //基类 not父类 constructor(name) { this.name = name; } sayHi() { console.log("Hi"); } }; class SubClass extends SuperClass {//派生类 not子类 constructor(name,age) { surpe(name); this.age = age; } sayNo() { console.log("NO"); } }; let subinst = new subClass('tom',18); subinst.sayHi();//Hi subinst.sayNo();//NO
class Person { constructor(name) { this.name = name; } } class PolitePerson extends Person { constructor(name) { this.greetColleagues(); // 这里不允许我们使用this,下面解释 super(name); } greetColleagues() { alert('Good morning folks!'); } }
greetColleagues() { alert('Good morning folks!'); alert('My name is ' + this.name + ', nice to meet you!'); }
[関連する推奨事項: JavaScript ビデオ チュートリアル
、プログラミング ビデオ]
以上がes6 のクラス継承で super が呼び出されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。