ES6 static相關

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...對象

相關文章
相關標籤/搜索