物件是什麼
從JavaScript定義上講物件是無序屬性的集合,其屬性可以包含基本值、物件或函數。也就是說物件是一組沒有特定順序的屬性,每個屬性會對應到一個值上,是一組鍵值對,值可以是資料或物件。
最簡單的對象
JavaScript的一對花括號{}就可以定義一個對象,這樣的寫法實際上和調用Object的構造函數一樣
var obj2 new Object();
抽像
既然是重複程式碼就可以抽像出來,用函數來做這些重複工作,在建立物件的時候呼叫一個專門建立物件的方法,對於不同的屬性值只需要傳入不同參數即可。
這樣在創建大量物件的時候,就可以透過呼叫此方法來做一些重複工作了,這種方式也不完美,因為在很多時候需要判斷物件的類型,上面程式碼建立出來的物件都是最原始的Object物件實例,只是拓展了一些屬性和方法。
有型點
又是function登場的時候,JavaScript中function就是個對象,在創建對象的時候打可以拋開上面createObj方法,直接使用function作為對象,怎麼實現復用呢,這就在於function作為對象的特殊性了。
1. function可以接受參數,可以根據參數來建立相同類型不同值的物件
2. function作為構造函數(透過new操作符調用)的時候會返回一個對象,在貧下中農版jQuery中提到過一些構造函數的基本知識,簡單複製一下
建構函式的回傳值分為兩種情況,當function沒有return語句或return回一個基本型別(bool,int,string,undefined,null)的時候,傳回new 所建立的匿名對象,該物件即為函數實例;如果function體內return一個引用類型物件(Array,Function,Object等)時,該物件會覆寫new建立的匿名物件作為回傳值。
3. 那麼使用function怎麼解決類型識別問題呢,每個function實例物件都會有一個constructor屬性(也不是“有”,而是可以對應),這個屬性就可以指示其構造是誰,也可以使用instanceof 操作符來做判斷物件是否為XXX的實例。
不能光說不練,上碼
複製碼
複製程式碼
程式碼如下: