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
posted @ 2022-03-14 15:10  TRY0929  阅读(419)  评论(0编辑  收藏  举报