JavaScript 对象属性
JavaScript 对象属性
- 属性中的 . 和 [ ](点 和 方括号)的区别
. :取对象自身的属性值;
[ ]:括号内容可以是变量;
1 var obj = {}; 2 obj.name = 'Twx'; 3 var nameA = 'name'; 4 // 使用 5 obj['name'] = 'Twx'; 等价于 obj[nameA] = 'Twx';
- 属性的删除
1 delete obj.name; // delete obj['name'];
- 属性的检测(判断属性是否属于对象)
1. in 运算符
1 'name' in obj = true; => 结果是 布尔 类型
2. hasOwnProperty([变量名称])
1 hasOwnProperty('name') = true; => 结果是 布尔 类型
3. != undefined (未定义)
1 obj.name != undefined => true; // 结果是 布尔 类型
- 枚举属性(for in 遍历)
1. for in 遍历中,对象 遍历出的是 key 值
1 var obj = {x:1,y:2,z:3}; 2 for(a in obj){ 3 a; //x,y,z key 值 4 obj[a]; //1,2,3 value 值 5 }
2. for in 遍历中,数组 遍历出的是 索引 值
1 var arr = [{x:1},{y:2},{z:3}]; 2 for(a in arr){ 3 a; //0,1,2 数组的索引值 4 }
3. 数组另两种遍历方式
3.1 for(var i = 0;i < 10;i++){ ... }
1 for(var i = 0;i < 10; i++){ 2 ... 3 // 同步执行 4 }
3.2 $.each(arr, function(index【索引】,item【值】){ ... })
1 $.each(arr, function(index【索引】,item【值】){ 2 ... 3 // 异步执行 4 });
4. 序列化
浅拷贝 只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝(例:assign())
深拷贝 是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝(例:JSON.parse()和JSON.stringify(),但是此方法无法复制函数类型)
1 // 深拷贝案例 2 var obj = {x:1,y:2,z:3}; 3 JSON.stringify(obj); //string {'x':1,'y':2,'z':3}; 4 typeof(JSON.stringify(obj)); //string 5 var str = JSON.stringify(obj); 6 JSON.parse(str); // object
5. ajax 传参 数据方式
1 var data = { 2 'name':_name, 3 'age':_age, 4 ... 5 } 6 // ajax 7 data:{dataJson:JSON.stringify(data)} // 传参