<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>js中的對象</title> </head> <script type="text/javascript"> /*Object 對象 類比爲:塑料袋 * 對象屬於一種複合的數據類型,在對象中能夠保存多個數據類型的屬性 * 分類: * 一、內建對象(標準的jar包):由ES標準定義的對象,在任何的ES的實現中均可以使用 如Math String * 二、宿主隊象(經常使用jar包):由js運行環境(瀏覽器)提供的對象,目前來講主要指由瀏覽器提供的對象 如BOM DOM * 三、自定義對象:開發人員本身建立的對象 * */ //一、建立對象 使用new關鍵字調用的函,是構造函數,構造函數是專門用來建立對象的函數 var obj=new Object(); //二、在對象中保存的值成爲屬性。語法:對象.屬性名="屬性值"。如添加一個name屬性 obj.name="孫悟空"; obj.gender="男"; obj.age=18; //三、讀取對象中屬性 語法: 對象.屬性名 .若是讀到變量中沒有的屬性,不會報錯會返回undefined /*(1)對象的屬性名不強制要求遵照標識符的規範 ,可是儘可能是按規範 如 obj.var=45;也對 (2)若是要使用亂七八糟的要採用另外一種方式。 對象["屬性名"]=屬性值,讀取時也要採用["屬性名"]去讀取 如obj["123"]=78;是對的 這種方式更加靈活 在[]中能夠傳一個變量,這變量的值是什麼就會去讀取那個變量 (3)、js屬性的值能夠是任意數據類型,包括能夠是一個對象(塑料袋中套個塑料袋) in:檢查一個對象中是否含有某個屬性 "name" in obj; * */ console.log(obj.name); obj.name="tom";//修改屬性的值 delete obj.age;//刪除對象的age屬性 console.log(obj.name); var n="sex"; obj["sex"]="女"; console.log(obj[n]); </script> <body> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>引用數據類型</title> <script type="text/javascript"> /*基本數據類型:String、 Number、Boolean、NULL、Undefined 引用數據類型:Object js中變量都是保存到棧內存中的 1)基本數據類型的值直接在棧內存中存儲的,值與值之間單獨存在,修改一個變量不會影響其餘變量; 2)引用數據類型的值是保存到堆內存的,在new一個對象時在堆中開闢一個空間,變量obj在棧中保存的是 對象的一個內存地址,當發生obj2=obj時等於把地址複製給obj2,它們操做的是同一地址的值,一個變另 一個也變。所謂地址就是一個引用。一個變量的屬性改變,另外一個也改變。 相似於"巫蠱娃娃" 若是obj2=null; 不會影響obj的引用 new一下等於新開闢一個空間 全部 var obj3=new Object(); obj3.name="TOM"; var obj4=new Object(); obj4.name="TOM"; 對象obj3與obj4 不等 ,由於他們指向不一樣的內存地址。即obj3==obj4 輸出爲false */ var obj=new Object(); obj.name="孫悟空"; var obj2=obj; obj.name="豬八戒"; console.log(obj.name); console.log(obj2.name); /*使用字面量來建立一個對象; * 還能夠直接在建立對象時,直接指定對象的屬性.語法var 對象名={屬性名1:屬性值,屬性名2:屬性值.....}; */ var obj3={}; obj3.name="三藏"; console.log(obj3.name); var obj4={name:"沙和尚", //這樣寫是爲了清晰 age:12, obj5:{name: "沙幣"} }; console.log(obj4.age); console.log(obj4.obj5.name); </script> </head> <body> </body> </html>