原型

  • Prototype是預設的繼承。

  • 類別用extend是自訂的繼承。

  • Call類似是組合

原型

  • 類別定義方式,只是原型物件導向語法的語法糖,骨子裡還是原型

  • 所有JavaScript中的函式都有一個內建的prototype屬性,指向一個特殊的prototype物件

  • prototype物件中也有一個contructor屬性,指向原來的函式

  • __proto__是每一個JavaScript中物件都有的內部屬性,代表該物件繼承而來的源頭,也就是指向該物件的原型(prototype)

繼承

ES6中的類別定義方法,使用extends關鍵字來作類別的繼承

class Player{
  constructor (name){
    this.name = name
  }
}

class VipPlayer extends Player {
  constructor (name, level){
    super(name)
    this.level = level
  }
}

typeof運算符所能判斷的情況過少,只能用於判斷資料類型。對於物件、陣列、null來說,它都會回傳'object'。 instanceof只能用於以new實體化的物件

工廠樣式

function PlayerFactory(name, age) {

  return {
    name : name,
    age: age,
    toString : function() {
        return 'Name: '+ this.name +' Age:'+ this.age
    }
  }
}

const inori = PlayerFactory('Inori', 16)
console.log(inori.toString())

const ayase = PlayerFactory('ayase', 17)
console.log(ayase.toString())

"建構式樣式"只能回傳物件,"工廠樣式"最後直接回傳物件實體

Last updated