JavaScript高階(05_物件)
物件Object
-
物件的分類:
-
內建物件
-
由ES標準中定義的物件,在任何的ES的實現中都可以使用
-
比如:Math String Number Boolean Function Object....
-
-
宿主物件
-
由JS的執行環境提供的物件,目前來講主要指由瀏覽器提供的物件
-
比如BOM(瀏覽器物件) DOM(文件物件)
-
比如 console document
-
-
自定義物件
-
由開發人員自己建立的物件
-
-
-
建立物件
-
建構函式
-
使用new關鍵字呼叫的函式,是建構函式constructor
-
var obj = new Object();
-
建構函式是專門用來建立物件的函式
-
在物件中儲存的值成為屬性
-
向物件新增屬性
-
語法:物件.屬性名=屬性值; | 物件["屬性名"] = 屬性值
-
-
讀取物件中的屬性
-
語法:物件.屬性名 | 物件["屬性名"]
-
-
如果讀取物件中沒有的屬性,不會報錯,而會返回Undefined
-
修改物件中額屬性值
-
語法:物件.屬性名=屬性新值;
-
-
刪除物件的屬性
-
語法:delete 物件.屬性名
-
-
-
物件字面量
-
可以在建立物件時,直接指定物件中的屬性
-
語法:{屬性名:屬性值, 屬性名:屬性值...}
-
物件字面量的屬性名可以加引號,也可以不加
-
如果要使用一些特殊的名字,則必須加引號
-
屬性名和屬性值是一組的名值結構
-
名和值之間使用:連線,多個名值之間使用,隔開
-
-
var obj2 = {name:"Tom",age:18}
-
-
Note
-
屬性名
-
物件屬性名不強制要求遵守識別符號的規範
-
儘量按照識別符號的規範去用
-
-
屬性值
-
js物件的屬性值,可以是任意的資料型別
-
也可以是一個物件
-
-
in運算子
-
通過in可以檢查一個物件中是否含有指定的屬性名
-
語法:“屬性名” in 物件
-
var obj = new Object()
obj.name = "Tom"
console.log("name" in obj) //true
-
-
-
-
-
基本資料型別和引用資料型別
-
變數都是儲存到棧記憶體中的
-
形式:變數名=變數值
-
基本資料型別的值直接在棧記憶體中進行儲存
-
值與值之間是獨立存在的,修改一個變數不會影響其他的變數的值
-
-
物件是儲存到堆記憶體中的
-
每建立一個新的物件,就會在堆記憶體中開闢出一個新的記憶體空間
-
變數儲存的是物件所對應的記憶體地址(物件的引用)
-
當通過一個變數修改物件屬性時,另一個也會受到影響
-
-
比較
-
當比較兩個基本資料型別的值時,就是值的比較
-
而比較兩個引用資料型別時,他們比較的是物件的記憶體地址
-
如果兩個物件是一模一樣的,但是記憶體地址不同,結果也返回false
-
-
-
-