Object 對象(對象的分類、屬性(屬性名和屬性值)、基本數據類型與引用數據類型區別)


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= 陳飄   切斷了該對象和地址的聯系。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM