静态方法
类中 有这样的 的一种方法, 我们都知道类的实例是通过new来产生的,并且类的实例对象的constructor 指向 类
类中的所有方法都是被类的实例对象继承的
但是 当 类中的方法 前面加上 static 的时候, 就说明 这个方法没办法通过 new 创建实例对象 进行调用, 只能通过类名点的形式调用, 这种方法我们称为 静态方法
class Foo {
static classMethod() {
return 'hello';
}
}
Foo.classMethod() // 'hello'
var foo = new Foo();
foo.classMethod()
// TypeError: foo.classMethod is not a function
类的静态方法可以被继承
**class Foo {
static classMethod() {
return 'hello';
}
}
class Bar extends Foo {}
Bar.classMethod(); // ‘hello’**
通过 extends 就可以继承
除了 以上的继承方式, 还可以 通过对象super进行调用
**Class Foo{
Static classMethod(){
return ‘hello’;
}
}
Class jicheng extends Foo{
Static class1{
Return super.classMethod();
}
Jicheng.class1();**
静态属性
静态属性指的是 Class 本身的属性, 即Class.propname, 而不是定义在实例对象( this) 上的属性。
Class 内部只能有静态方法不能有静态属性 因此
**class Foo {}
Foo.prop = 1;
Foo.prop // 1**
我们通过上面的方法为Foo定义一个静态的属性
在ES7中 新增的 类内部可以有实例属性
class MyClass {
myProp = 42;
constructor() {
console.log(this.myProp); // 42
}
}
在上面代码中 ,我们可以通过类的实例来进行访问 在以前我们只能通过在constructor中创建实例属性
现在 不用这么麻烦了
class ReactCounter extends React.Component {
state = {
count: 0
};
}
下面就是新的 可以在 类的内部创建静态属性
class Foo {}
Foo.prop = 1;
// 新写法
class Foo {
static prop = 1;
}