定義 對象是JS中的引用數據類型。對象是一種複合數據類型,在對象中可以保存多個不同數據類型的屬性。使用typeof檢查一個對象時,會返回object。 分類 內置對象 由ES標准定義的對象,在任何ES的實現中都可以實現。比如 Math String Number Boolean Function O ...
定義
對象是JS中的引用數據類型。對象是一種複合數據類型,在對象中可以保存多個不同數據類型的屬性。使用typeof檢查一個對象時,會返回object。
分類
內置對象
由ES標准定義的對象,在任何ES的實現中都可以實現。比如 Math String Number Boolean Function Object...
宿主對象
由 JS 的運行環境提供的對象,主要指由瀏覽器提供的對象。比如 BOM DOM
自定義對象
由開發人員自己創建的對象
創建自定義對象
//方式一
var obj = new Object(); //使用 new 關鍵字調用的函數,是構造函數
//方式二
var obj = {};
對象的屬性
屬性名
- 對象的屬性名不強制遵守標識符規範,可以使用任何名字,如 obj.var = "hello"
- 如果需要使用特殊屬性名,如 obj.123 = "hello",必須使用另一種賦值方式:對象["屬性名"] = "屬性值"。讀取時也必須使用採用上述方式
- 在 [] 中直接傳遞一個變數,變數值是多少就讀取相應屬性,更加靈活
屬性值
- JS 對象的屬性值可以是任意的數據類型。也可以是一個對象
向對象中添加屬性
- 語法:對象.屬性名 = 屬性值 或 對象["屬性名"] = 屬性值
- 對象的屬性名沒有任何要求,不需要遵守標識符的規範,但是在開發中,儘量按照標識符的要求去寫。
- 屬性值也可以任意的數據類型。
讀取對象中的屬性
- 語法:對象.屬性名 或 對象["屬性名"]
- 如果讀取一個對象中沒有的屬性,它不會報錯,而是返回一個undefined
刪除對象中的屬性
- 語法:delete 對象.屬性名 或 delete 對象["屬性名"]
使用in檢查對象中是否含有指定屬性
- 語法:"屬性名" in 對象
- 如果在對象中含有該屬性,則返回true,如果沒有則返回false。
枚舉對象中的屬性
- 語法:for(var 屬性名 in 對象){ ... }
- for...in語句的迴圈體會執行多次,對象中有幾個屬性就會執行幾次,每次講一個屬性名賦值給我們定義的變數,我們可以通過它來獲取對象中的屬性
基本數據類型和引用數據類型
- 基本數據類型:String Number Boolean Null Undefined
- 引用數據類型:Object
- JS 中的變數都是保存到棧記憶體中
- 基本數據類型
- 基本數據類型的值直接在棧記憶體中存儲,變數是直接保存的它的值。
- 變數與變數之間是互相獨立的,修改一個變數不會影響其他的變數。
- 引用數據類型
- 對象是保存到堆記憶體中,每創建一個新的對象,就會在堆記憶體中開闢出一個新的空間
- 引用數據類型的數據,變數是保存的對象的引用(記憶體地址)
- 如果多個變數指向的是同一個對象,此時修改一個變數的屬性,會影響其他的變數。
- 比較兩個變數時,對於基本數據類型,比較的就是值,對於引用數據類型比較的是地址,地址相同才相同
- 基本數據類型
使用對象字面量,在創建對象時直接向對象中添加屬性
var obj = {
屬性名:屬性值,
屬性名:屬性值,
屬性名:屬性值,
屬性名:屬性值
}