【下載Infragistics Ultimate最新版本】javascript
在一個javascript類中建立一個屬性的需求,它須要被全部對象實例共享。在編程中,這些類型的屬性稱爲靜態屬性。java
當須要靜態成員屬性時,有多種狀況:編程
- 計算從特定類建立的對象實例數時
- 在類級別而不是對象實例級別等記錄一些信息時。
要建立靜態屬性,須要清楚兩件重要的事情:函數
- javascript類不能有成員屬性。只能使用構造函數建立它
- 與函數構造函數同樣,javascript類也有一個原型
1this 2spa 3prototype 4code 5對象 6ip 7 8 9 |
class Foo { constructor(goal) { this .goal = goal; Foo.prototype.objectcount++; } } Foo.prototype.objectcount = 0; |
讓咱們來談談foo類的實現,
- 咱們向foo類原型添加了一個屬性
- 在構造函數中增長它,由於每次建立對象時都會調用構造函數
本質上,要建立靜態屬性成員,請向類原型對象添加屬性。如今,建立一個Foo類的實例,
1 2 3 4 5 6 7 8 |
let f1 = new Foo(78); console.log(f1.objectcount); // 1 let f2 = new Foo(45); console.log(f2.objectcount) // 2 let f3 = new Foo(45); console.log(f3.objectcount) // 2 console.log(f1.objectcount === f2.objectcount); // true console.log(f2.objectcount === f3.objectcount); // true |
如今能夠看到,objectcount跟蹤全部對象的計數。對於全部對象實例也是相同的,所以,它能夠稱爲JavaScript類的靜態成員屬性。