ES 6-------学習(6)class
2376 ワード
きほんしよう
class Point {
constructor(x = 0, y = 0) {
this.x = x;
this.y = y;
}
toString() {
return this.x + ':' + this.y;
}
}
let point = new Point();
console.log(point.toString());
コンストラクションメソッドはコンストラクションメソッドであり、thisキーワードはインスタンスオブジェクトを表します.すなわち,ES 5のコンストラクション関数Pointは,ES 6のPointクラスに対応するコンストラクションメソッドである.constructorメソッドはデフォルトでインスタンスオブジェクト(this)を返し、別のオブジェクトを返すことを完全に指定できます.
class B{};
var b = new B();
B.prototype.constructor = b.constructor;
Pointクラスは、構築方法に加えてtoStringメソッドも定義されています.注意、「クラス」を定義する方法は、前にfunctionというキーワードを付ける必要がなく、直接関数定義を入れればいいのです.また,メソッド間はカンマ区切りを必要とせず,加算するとエラーが報告される.
クラスとモジュールの内部ではデフォルトが厳格モードなので、use strictが実行モードを指定する必要はありません.コードがクラスまたはモジュールに書かれている限り、厳格モードのみが使用できます.
class内部では定義方法のみが許可され、静的属性を含む属性の定義は許可されません.以下の書き方は無効です.
class Foo{
bar:2
}
継承
class Point {
constructor(x, y, color) {
super(x, y); // constructor(x, y)
this.color = color;
}
toString() {
return this.color + ' ' + super.toString(); // toString()
}
}
class ColorPoint extends Point {
}
let sunny=new ColorPoint;
sunny.name('haha');
//例2
class Animal {
constructor(name = 'John Doe', species = ' '){
this.name = name;
this.species = species;
}
sayHello(){
console.log('hello',this.name,this.species)
}
}
class Sheep extends Animal{
constructor(name = 'Jimmy',species = ' '){
super(name, species);
}
sayHello(){
console.log('child');
super.sayHello()
}
}
let sheep = new Sheep('Tom');
sheep.sayHello();
スタティツクメソッド
class Foo{
static say(){
console.log('I am saying: ');
}
}
class Bar extends Foo{
sayHello(){
super.say(); // , sayHello
console.log('hello');
}
static singHello(){
super.say();
console.log('hello')
}
}
Bar.say();
let bar = new Bar();
bar.sayHello();
サブクラスの静的メソッドでは、superを使用して親クラスの静的メソッドを呼び出すことができます.なお、サブクラスの静的メソッドのsuperは、親の静的メソッドのみを呼び出すことができ、親の他のメソッドを呼び出すことはできない.逆に、サブクラスのインスタンスメソッドのsuperは、親のインスタンスメソッドのみを呼び出すことができ、その静的メソッドを呼び出すことはできない.親の静的メソッドを呼び出すには、親クラス名を使用することができる.方法の仕方.