【JS】静态属性和方法
静态方法和属性:
1.静态方法:
将一个方法作为整体赋值给类,该方法作为类的方法使用,而不是某个实例的方法使用,使用static关键字修饰。
class MyClass {
static staticMethod() {
console.log(this === MyClass); //true, this 就是类构造器MyClass自身
}
}
// 类似于:
// class MyClass {}
// MyClass.staticMethod = function () {
// console.log(this === MyClass);
// }
MyClass.staticMethod()
// 不能作为实例的方法
let c = new MyClass()
c.staticMethod() // Uncaught TypeError: c.staticMethod is not a function
2.静态属性
在常规的类属性前加上static关键字就是静态属性
同样的只作为类自己的属性使用
class MyClass {
static staticProp = 'MyClass'
}
// 类似于:
// class MyClass {}
// MyClass.staticProp = 'MyClass'
console.log(MyClass.staticProp); // 'MyClass'
let a = new MyClass()
console.log(a.staticProp); // undefined
3.继承静态属性和方法
extends使得 Child.prototype == Parent
所以子类可以访问父类的静态方法和属性
class Parent {
static staticProp = 'parent static prop'
static test(){
console.log('static parent method');
}
}
class Child extends Parent{}
console.log(Child.staticProp); // 'parent static prop'
Child.test() // 'static parent method'