12. 高階物件結構

建立物件

  • 物件字面:object literal
  • 物件建構式:object constructor

物件字面:object literal

  • , 屬性間隔,最後不用
    let catMm = {
      name: 'mm',
      color: 'white',
      age: 2
    }
    

    物件建構式:object constructor

    「建構式」重點在「建構」,是去 clone 一個範本, 新物件會有自己一份、同樣的屬性,但不是一個「共用」的概念。
    // 定義
    function Cat (name, color, age){
      this.name = name,
      this.color = color,
      this.age = age,
      this.sound = function(){
          if(age>1){
              console.log('MM')
          }else{
              console.log('...m')
          }
      }
    }   
    // 使用
    var catMm = new cat('mm', 'white', 2)
    
  • 通常字首大寫
  • this 是一個參址器,代表當前程式碼正在處理的物件
  • = 指定
  • 可以放 function (方法),這裡不會直接使用參數,而是使用物件屬性。
  • new 運算符:
    1. 建立一空物件,
    2. 並把 this 指向該物件、
    3. 叫用函式 (object constructor)
    4. 用引數建立屬性、
    5. 將物件回傳給變數...
  • 小心,忘了使用 new 也可以呼叫建構式
    let a = cat('mm', 'white', 2)
    a.sound  // sound 未定義 
    // 沒東西被建立、沒東西回傳給 a, 所以沒有 a.sound
    // 但 cat 被定義了?
    

物件實例

  • type 運算符:告訴我們運算元的型別
  • instanceof (實例來自於) 運算符:會告訴我們物件來自哪個建構式。
    (something instanceof Car) // true / false
    

    js 內建的建構是

  • Date()
  • Array()
  • Object()
  • Math()
  • RegExp()
  • Error()
  • ...

results matching ""

    No results matching ""