[19/05/28-星期二] JavaScript_ 對象和引用數據類型

<!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>
相關文章
相關標籤/搜索