ES6 class
程序员文章站
2022-07-13 08:41:42
...
class
一、定义一个class
constructor 是一种用于创建和初始化class创建的对象的特殊方法。
"use strict";
class Person {
constructor(name) {
this.name = name;
}
say () {
console.log("hello world");
}
};
new Person().say(); // hello world
注意: ES6中声明的类不存在函数声明提前的问题, 类必须先声明再使用,否则会出现异常 。
二、静态方法和原型方法
注意:静态方法跟原型没有关系,也不能所谓实例化出来。Person类上有静态方法,而p1没有。
三、静态属性和原型属性
- 只能在类定义完毕以后再定义静态属性
- 原型上面也不能定义属性了, 我们只能在原型上定义set和get, 取值和设值器, 要注意取值器和设值器是在原型上
"use strict";
class Person {
constructor(name) {
this.name = name;
}
say () {
console.log("hello world 原型方法"); // .prototype.say()
}
static info(){
console.log('我是一个类 静态方法')
}
};
Person.sex = "0"; //静态属性
console.log(Person.sex) //0
"use strict";
class Person {
constructor(_name) {
this._name = _name;
}
get name(){
return this._name;
}
set name(_name){
this._name = _name;
}
};
var p = new Person();
p.name = "Jack";
console.log(p.name) //Jack
console.log(p._name) //Jack
如果要定义原型属性的话, 直接把属性定义在constructor内部即可。
四、类的继承extends
"use strict";
class Person {
constructor(name) {
this.name = name;
}
say(){
console.log("hello class")
return this //链式调用
}
};
class SuperMan extends Person {
constructor(name,power){
super(name) //// 注意: 在派生类中, 必须先调用 super() 调用的同时,会绑定 this 。
this.superPower = power
}
show(){
console.log(this.superPower)
return this // 链式调用
}
}
console.log( new SuperMan("Rose","pee").show().say().name) //pee hello class Rose
如果要使用继承的话, 在子类中必须执行super()调用父类, 否者编译器会抛错, 在子类中的super有三种作用:
- 第一是作为构造函数直接调用,
- 第二种是作为父类实例,
- 第三种是在子类中的静态方法中调用父类的静态方法。
上一篇: 六一 | 如何用Python制作童年游戏
下一篇: Es6新增语法----class类