1. 程式人生 > >前端學習一屬性的新增/刪除/檢測。。。。。。

前端學習一屬性的新增/刪除/檢測。。。。。。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>屬性</title>
    <script>
    window.onload = function(){
        //屬性的新增 ./[]
        // . 是取自身的屬性,[] 獲取的可以是變數。
        //取自身屬性
        var obj = {};
        obj.name = 'sonia';
        obj['age'] = 20;
        console.log(obj.age);
        console.log(obj['age']);
        //變數
        var obj2 = {};
        obj2.name = 'sonia';
        var a = 'name';
        console.log(obj2[a]);

        //屬性的刪除 delete
        var obj3 = {};
            obj3.name = 'sonia';
            obj3.age = 12;
            obj3.state=false;

        delete obj3.name;//刪除name屬性
        delete obj3['name'];//刪除name屬性
        
        //屬性的檢測  判斷是否存在該屬性
        // 1、in 運算子(可以獲取繼承來的屬性)
        var obj4 ={
            name:'sonia',
            age:20
        };
        //檢測屬性name是否存在於obj4這個物件中
        console.log('name' in obj4);//存在 true 不存在 false
        // 2、物件.hasOwnProperty()  方法 
        obj4.hasOwnProperty('name');
        //!=underfined 值得判斷
        console.log(obj4.name!==undefined);

        //= == === != !==
        //= 賦值; 
        //== 判斷;=== 全等判斷(對型別也比較)
        //0=='0'=>true;0==='0'=>false;

        //列舉屬性
        //for in
        //for(索引 in 陣列){};
        var arr= ['a','b','c','d'];
        var o = {name:'sonia',age:23};
        for( a in arr){
            console.log(a);//打印出下標0,1,2,3
            console.log(arr[a]);//打印出值a,b,c,d
        };
         //for(屬性 in 物件){};
        for( b in o){
            console.log(b);//打印出:name,age
            console.log(o[b]);//打印出值sonia,23
        };
        //forEach() 
        var arr2= ['a','b','c','d'];
        arr2.forEach(function(item,index){//無返回值
            console.log(item);//abcd
            console.log(index);//0123
        });
        //map() 回撥函式支援return返回值
        var arr3= ['a','b','c','d'];
        arr3.map(function(item,index){//無返回值
            return item;
        });

        //序列化   JSON.parse() JSON.stringify()
         //JSON.parse() 物件字串轉為物件
         var o = "{name:'sonia',age:23}";
         var o2 = JSON.parse(o);//這時你就可以這樣用:o.name
         //JSON.stringify() 物件轉為物件字串
         var o = {name:'sonia',age:23};
         console.log(typeof JSON.stringify(o));//轉換成了string型別。

         //深拷貝(拷貝出另一個數組,沒有聯絡的陣列)
         //陣列 slice(開始,結束)  concat() 兩個方法返回的是新陣列
         var arr4= ['a','b','c','d'];
         arr4.slice(1,2);//b,從第一個開始到第二個結束不包括第二個
         arr4.slice(0);//返回的是一個新的陣列,值與arr4一致。
         var arrCopy = arr4.slice(0);
         arrCopy[0]='aaaa';//此處數值改變不會影響arr4[0];
         //concat()
         var arr4= ['a','b','c','d'];
         var arrCopy = arr4.concat()
         arrCopy[0]='aaaa';//此處數值改變不會影響arr4[0];
        //物件
        var o = {name:'sonia',age:23};
        var oCopy = JSON.parse(JSON.stringify(o));
        oCopy.name = 'cccccc';//此處數值改變不會影響o.name;

         // 淺拷貝(引用 影子)
         //陣列
         var oo2=[1,2,3,4];
         var ooo=oo2;
         ooo[0]=23;
         console.log(oo2[0]);//23
         //物件
         var oo={name:'qwe',age:20};
         var ooo=oo;
         ooo.age=23;
         console.log(oo.age);//23
         
    }
    
    </script>
</head>
<body>
    
</body>
</html>