es6class类排他
时间: 2024-01-09 15:42:34 浏览: 80
详解ES6的类
ES6中的class类可以使用static关键字定义静态方法和属性,这些静态成员只能通过类本身调用,而不能通过类的实例调用。例如:
```
class MyClass {
static staticMethod() {
console.log('This is a static method');
}
static staticProperty = 'This is a static property';
}
MyClass.staticMethod(); // 输出:This is a static method
console.log(MyClass.staticProperty); // 输出:This is a static property
const myObject = new MyClass();
myObject.staticMethod(); // 报错:myObject.staticMethod is not a function
console.log(myObject.staticProperty); // 输出:undefined
```
注意,静态方法和属性是类的所有实例共享的,因此它们可以用于实现排他的功能,例如:
```
class Singleton {
static instance = null;
static getInstance() {
if (this.instance === null) {
this.instance = new Singleton();
}
return this.instance;
}
private constructor() {}
}
const instance1 = Singleton.getInstance();
const instance2 = Singleton.getInstance();
console.log(instance1 === instance2); // 输出:true
```
在上面的例子中,使用了一个私有的构造函数和一个静态的instance属性来实现单例模式,保证只有一个实例被创建。由于静态成员只能通过类本身调用,因此无法从外部创建新的实例。
阅读全文