Object——引用數據類型
基本數據類型的不足之處:基本數據類型是單一的值,不能表現出值與值之間的所屬關系
object分為內建對象、宿主對象和自定義對象
a 內建對象:ES標准中定義的對象,在任何ES的實現中都可以使用;例如:Math String等。
b 宿主對象:由JS運行的瀏覽器提供的對象,目前主要是指瀏覽器提供的對象;例如:BOM DOM.
c自定義對象:由開發人員自己創建的對象。
屬性名和屬性值
例如,先創建一個新的對象 var obj = newObject(); 向新創建的對象中添加屬性 obj.name =“陳飄”;
此時這里的name為屬性名 “陳飄”為屬性值
注意:
a 屬性名不強制遵守標識符規范,但是盡量遵守標識符的規范,如果使用了特殊的屬性名,則不可以使用 object.屬性名=屬性值的方式添加對象屬性,需要使用 object["屬性名“]=屬性值,同時在取讀時也需要使用該方式。
b屬性值可以是任意數據類型,甚至可以是一個對象。
c in運算符:通過這個運算符可以檢查一個對象是否含有指定的屬性,如果有則返回true,否則返回false。
語法: ”屬性名“in obj
例如:console.log("test" in obj);
關於屬性的總結:
添加屬性 :obj.屬性名=屬性值;
取讀屬性:obj.屬性名 例如:console.log(obj.gender); 注意:如果沒有該屬性會返回undefined並不會報錯。
修改屬性:obj.屬性名=新的屬性值;
刪除屬性:delete obj.屬性名
基本數據類型和引用數據類型的區別:
基本數據類型:String Boolean Number Undfined Null
引用數據類型:Object
區別:
基本數據類型:js的變量保存在棧內存中,變量的值也是直接保存在棧內存中;值與值之間是彼此獨立的,一個值的修改僅僅影響自身。
var a =12; var b = a; a++;
以上 輸出 a = 13 b=12 兩者是互不影響的
變量在棧內存中保存顯示 變量名+值
引用數據類型:創建一個對象時會在堆內存中開辟一個空間,用來存放對象的屬性。在為對象添加屬性時,是將屬性放在堆內存中開辟的空間里。
在棧內存中保存顯示 對象名 +一個地址(類似於指針,指向堆內存中該對象開辟的空間)
var obj = New object(); obj.name="陳飄"; var obj2 = obj; obj2.name =“阿飄”;
此時name=阿飄。值已經被修改,因為兩個對象指向同一個地址
注意 當obj2.name= Null; 時 name= 陳飄 切斷了該對象和地址的聯系。