ES 6のclass関数
1524 ワード
構文は次のとおりです.は、構造関数 に相当する.クラス内のすべてのメソッドは を追加するデフォルトである.は、 を用いることができる.内部では厳格モードが使用され、変数リフト は存在しない. 解決方法1.コンストラクション関数に を使用
静的メソッドと静的プロパティ(プロパティ名の前に#を付ける):インスタンスに継承されず、クラスによって直接呼び出すことができ、静的メソッドの を継承することができる.
コンストラクション関数がどのように呼び出されるかを決定できます.class内部呼び出し、現在のclassを返し、サブクラスが親クラスを継承する場合、new.targetはサブクラスを返します
class Father{
constructor(){
this.a = '12';
}
toString(){
cosole.log('hah');
}
}
console.log(typeof Father);//"function"
console.log(Father===Father.prototype.constructor);//true
prototype
に掛けられ、Object.hasOwnPropertyNames(Point.prototype)
は指定されたオブジェクトのすべての自己属性の属性名(列挙できない属性を含むが、Symbolという属性を含まない)からなる配列を返す.constructor
はデフォルトでインスタンスオブジェクトを返し、明示的な書き込みがない場合、エンジンはconstructor
関数get
の値関数およびset
の値関数(いずれもDescriptor
オブジェクトに掛けられている)class Father{
constructor(){
this.a = '12';
}
get prop(){
return 'hah';
}
set prop(value){
console.log("Fail", value);
}
toString(){
cosole.log('hah');
}
}
let oL = new Father();
oL.prop = 123; //Fail 123
console.log(oL.prop); //hah
this
は問題を指し、クラス内部メソッドのthis
はインスタンスを指し、this
を単独で使用するとthis
が運転環境を指すが、厳格なモードを使用しているため、undefined
であり、メソッドエラーが見つからない.this
をバインドする.矢印関数this
はクラスを指し、extends
によってnew.target
コンストラクション関数がどのように呼び出されるかを決定できます.class内部呼び出し、現在のclassを返し、サブクラスが親クラスを継承する場合、new.targetはサブクラスを返します