class
class
-
实际上是一个
function
,但不存在函数提升-
同样可以通过两种方式定义
class User{
}
//或者
var User = class {
}
-
-
在其中通过构造函数声明属性,可以通过计算属性声明
constructor(name, email) {
this.name = name;
this.email = email;
} -
创建类对象
var student1 = new User('ashen', 'ashen@ashen.com');
-
在其中声明方法
website(){
console.log(`http://${this.email}`)
}
//所有通过此类创建的对象都可以调用 -
声明静态方法
-
只能被类调用,不能被实例对象调用的方法
static describtion(){
console.log('I am a user of QQ')
}
-
-
set和get
set address(value){
this.info = value
}
get address(){
return this.info;
}-
通过
类.属性 = ...
的方式为其设置值 -
通过
类.属性
的方式获取值User.address = '忠科绿苑'
"忠科绿苑"
User.address
"忠科绿苑"
-
class 的继承
-
通过
extends
关键字进行继承 -
在
constructor
中传入基类的属性,并在其中通过super
声明class Dog extends Animal {
constructor(name, age) {
super(name);
this.age = age;
}
} -
继承了基类中所有属性和方法,可以在实例对象中直接调用基类方法
-
若子类中有和基类的同名函数,子类中的函数会将基类中的覆盖
扩展内建对象数组
-
此时
super
中的this
会指向Array
,因此newArr
可以访问Array
的所有属性和方法
class newArr extends Array {
constructor(name) {
super();
this.name = name;
}
}
-
添加属性
-
在构造函数中声明
-
添加到super中
constructor(name,
-
-
添加方法,直接在子类中定义