對象:無序的鍵值對的集合
創建對象的兩種方式
字面量: var student = {};建了一個空對象
內置構造函數 var student = new Object();
對象的賦值和取值
取值:對象名.屬性名 ------如果存在,返回響應值;如果不存在,undefined
對象名.方法名------直接獲取,返回函數體,對象名.方法名(),即調用這個方法
賦值(類似數組) 對象名.屬性名-----存在,直接覆蓋,不存在,新建屬性,在賦值
操作對象的兩種語法
- 點語法 對象名.屬性名: 簡單方便,不支持變量
- 中括號語法: 對象名[‘屬性名’] 靈活,支持字符串和變量
對象名[變量名] :通過變量值找到屬性名,然后再去對象里面查找對應的值
對象的遍歷
for(var k in obj){……}
k鍵(屬性名) obj[k] 值(屬性值)
批量創建對象
- 工廠函數:本質就是一個函數,將創建對象的代碼進行封裝成函數
特點:創建出來的類型都時Object類型
function createObject()({
var obj = {……};
return onj;
}
注意點:1.返回值---調用時通過傳過來的實參對對象進行具體的賦值
對象的方法中,this指的是當前的對象
- 自定義構造函數
特征:需要結合new使用,創建出來的對象有自己的類型
構造函數中new的作用
- 建立一個新對象,並指定類型
- 讓構造函數的this指向新建的構造函數
- 執行構造函數
- 返回新對象(實例)
構造函數的特點:
- 構造函數,就是一個函數
- 首字母大寫
- Js中內置了一些Array Object
- 可以自定義
補充:值類型和引用類型
值類型(簡單數據類型):在變量中存儲的是本身,賦值時,賦值的也是值本身,值傳遞時,傳的也是值本身
引用類型(復雜數據類型):在變量中存儲的是內存地址,賦值時,賦值的也是內存地址,傳遞時,傳的也是內存地址
注意點:javascript中字符串(string)是個特殊的類型,它是通過傳地址來賦值和傳遞,但是它是通過傳值比較的