ES6中新增了class这个语法糖。此class并不是java中的class,ES6中的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。其中有static关键字。
static关键字多用于静态方法和静态属性。java
静态方法:es6
不一样于普通在类中定义的会被实例继承的方法。在方法前加上static关键字。就表示该方法不会被实例继承,而是直接经过类来调用,这就称为“静态方法”。 class Foo { static classMethod() { return 'hello'; } } Foo.classMethod() // 'hello' var foo = new Foo(); foo.classMethod() // TypeError: foo.classMethod is not a function
Foo类的classMethod方法前有static关键字,代表该方法是一个静态方法,能够直接在Foo类上调用(Foo.classMethod()),而不是在Foo类的实例上调用。若是在实例上调用静态方法,会抛出一个错误,表示不存在该方法。编程
静态属性:
静态属性指的是 Class 自己的属性,即Class.propName,而不是定义在实例对象(this)上的属性。this
// 老写法 class Foo { // ... } Foo.prop = 1; // 新写法 class Foo { static prop = 1; }
上面代码中,老写法的静态属性定义在类的外部。整个类生成之后,再生成静态属性。这样让人很容易忽略这个静态属性,也不符合相关代码应该放在一块儿的代码组织原则。另外,新写法是显式声明(declarative),而不是赋值处理,语义更好。code
总结参考于:阮一峰ES6http://es6.ruanyifeng.com/#do...对象