ES6 以前,JavaScript 沒有原生支持類,繼承是通過使用原型鏈實現的。但是當我們需要在 Class 中定義屬性時,就需要使用 ES6 中的 JSON 繼承。JSON 繼承是一種讓一個類繼承另一個類的方式,通過使用 JSON 對象定義類的屬性和方法來實現。
JSON 繼承使用了兩個重要的關鍵字:`super` 和 `extends`。其中 `super` 關鍵字用于調用父類的構造函數;而 `extends` 關鍵字則表明了子類繼承的父類。
class Animal { constructor(type) { this.type = type; } move() { console.log(`This ${this.type} is moving.`); } } class Dog extends Animal { constructor() { super('dog'); } } let myDog = new Dog(); myDog.move(); // 輸出: This dog is moving.
在上面的代碼中,我們定義了一個 Animal 類來表示動物的基本屬性和方法,并定義了一個 Dog 類來表示狗的屬性和方法。通過使用 `extends` 關鍵字,我們讓 Dog 類繼承了 Animal 類,使得 Dog 可以使用 Animal 的屬性和方法。在 Dog 的構造函數中,我們通過調用 `super()` 方法來調用 Animal 的構造函數,并將代表狗的字符串作為參數傳遞給它。這樣就完成了對 Animal 中 type 屬性的賦值。
除了屬性外,我們還可以在 JSON 繼承中使用方法。在下面的例子中,我們定義了一個 Cat 類來表示貓的屬性和方法。這次我們增加了一個 sleep 方法,來表示貓的睡覺行為,但是這個 sleep 方法是通過 JSON 對象的方式添加的。
class Cat extends Animal { constructor() { super('cat'); } sleep() { console.log(`This ${this.type} is sleeping.`); } } let myCat = new Cat(); myCat.move(); // 輸出: This cat is moving. myCat.sleep(); // 輸出: This cat is sleeping.
在上面的代碼中,我們在 Cat 類的內部使用了一個 sleep 方法,這個方法是通過 JSON 對象的方式添加的。我們可以發現,這種方式在很多場合下更加靈活易用,而且可以定義多個方法。
總之,JSON 繼承是一種靈活方便的繼承方式,可以幫助我們更加方便地定義類和方法。它的使用不僅能夠提高代碼的可讀性,而且可以使代碼更加優美。