この記事は、es6 のクラスを簡単に理解できるものです (例を示します)。必要な方は参考にしていただければ幸いです。
#クラスのクラス
基本的な概念を記録し、後で理解を深めることができます#クラスとは何かを理解するクラスとは何ですか? 1 つ作成して、
class Demo { constructor() { this.a = 1; this.b = this.f; } f() { return this; } } Demo.prototype; //{ // constructor: class Demo // f: ƒ f() // __proto__: Object }
Demo のプロトタイプを見てみるのもよいでしょう。これらの 3 つの属性はトラバース可能ではなく、Demo クラスと比較して追加の __proto__ プロトタイプ チェーンがあることがわかります。新しいデモを見てみましょう
let o = new Demo(); console.log(Object.getPrototypeOf(o)); //{ // constructor: class Demo // f: ƒ f() // __proto__: Object }
実際、Demo クラスは Demo インスタンスのプロトタイプと同等です
クラス内のコンストラクター
constructor() { this.a = 1; this.b = this.f; }
この部分はes5のコンストラクタの機能に相当します。newの処理では値を代入して返すので、オブジェクトを返すとインスタンスオブジェクトになります。コンストラクター内で null に等しくない場合、インスタンス オブジェクト これは return の値であり、es5 コンストラクターと同じ効果があります
クラスのメソッド
f() { return this; }
新しい知識ポイント
クラスの静的メソッド は、メソッドがインスタンスによって継承されず、クラスを通じて直接呼び出されることを意味しますclass Demo { constructor() { this.a = this; this.b = this.f; } static g() { return this; } static f() { return this; } } let o = new Demo(); //console.log(o.b()); //not a function //console.log(o.g()); //not a function Demo.g() === Demo; //true
this はクラス自体を指します。 a = this
インスタンス オブジェクト自体を指します静的メソッドはサブクラスから継承できます
class Foo { static classMethod() { return 'hello'; } } class Bar extends Foo { } Bar.classMethod() // 'hello'
class Foo { static classMethod() { return 'hello'; } } class Bar extends Foo { static classMethod() { return super.classMethod() + ', too'; } } Bar.classMethod() // "hello, too"
var o = new class { constructor(n) { this.a = n; this.b = this.f; } g() { return n; } f() { return this; } }(1) o.a; // 1
function f() { return new.target; } console.log((new f()) === f); //true
以上がes6 のクラスの簡単な理解 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。