ES6中类的 实例属性、实例方法、静态属性、静态方法总结
ES6出现了class的概念,其实和其他语言中的class的使用方法大同小异,这里简单总结以下js中相关的使用方法。
实例属性和方法
- 直接写在类中,挂载在this对象上;
- 只能通过设置get和set方法拿到,不然是默认的private 从外界无法获取也无法修改;
- 在外界只能创建实例后,通过实例取到。
// 定义
class TestClass extends Test {
constructor(props = {}) {
super(props)
}
this.prop = 1 // 实例属性
get prop() {
return this.prop
}
set prop(value) {
this.prop = value
}
}
// 使用
const test = new Test()
test.prop = 2 // 实际上调用了里面写的 set 方法
静态属性和方法
- 也是直接写在类中,但要加 static 关键字;
- 定义静态方法也是一样,在方法前面加上 static 关键字;
- 实例方法中拿到静态属性要通过 类名 获取,静态方法中可以通过this获取。
// 定义
class TestClass extends Test {
constructor(props = {}) {
super(props)
}
static prop = 1 // 静态属性
// 实例方法中要用类名拿静态属性
setProp(value) {
TestClass.prop = value + 1
}
// 静态方法中用this拿到静态属性
static get prop() {
return this.prop
}
static set prop(value) {
this.prop = value
}
}
// 使用
const test = TestClass.prop
TestClass.prop = test + 1