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
運算符:- 建立一空物件,
- 並把
this
指向該物件、 - 叫用函式 (object constructor)
- 用引數建立屬性、
- 將物件回傳給變數...
- 小心,忘了使用 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()
- ...