ES6 static相干

ES6中新增了class这个语法糖。此class并不是java中的class,ES6中的class写法只是让对象原型的写法越发清楚、更像面向对象编程的语法罢了。其中有static关键字。
static关键字多用于静态要领和静态属性。

静态要领

不同于一般在类中定义的会被实例继续的要领。在要领前加上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)上的属性。

// 老写法
class Foo {
  // ...
}
Foo.prop = 1;

// 新写法
class Foo {
  static prop = 1;
}

上面代码中,老写法的静态属性定义在类的外部。全部类天生今后,再天生静态属性。如许让人很轻易疏忽这个静态属性,也不符合相干代码应当放在一同的代码组织原则。别的,新写法是显式声明(declarative),而不是赋值处置惩罚,语义更好。

总结参考于:阮一峰ES6http://es6.ruanyifeng.com/#do…

    原文作者:overthes
    原文地址: https://segmentfault.com/a/1190000019234283
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞