JavaScript 对象属性

JavaScript 对象属性

  • 属性中的 . 和 [ ](点 和 方括号)的区别

    .  :取对象自身的属性值;

    [ ]:括号内容可以是变量;

  var obj = {};
obj.name = 'Twx';
var nameA = 'name';
// 使用
obj['name'] = 'Twx'; 等价于 obj[nameA] = 'Twx';
  • 属性的删除

delete obj.name; // delete obj['name'];

  • 属性的检测(判断属性是否属于对象)

    1. in 运算符

'name' in obj = true; => 结果是 布尔 类型

    2. hasOwnProperty([变量名称])

1 hasOwnProperty('name') = true; => 结果是 布尔 类型

    3. != undefined (未定义)

1 obj.name != undefined => true;  // 结果是 布尔 类型

  • 枚举属性(for  in  遍历)

    1. for  in  遍历中,对象 遍历出的是 key 值

 var obj = {x:1,y:2,z:3};
for(a in obj){
a;     //x,y,z key 值
obj[a];    //1,2,3 value 值
}

    2. for  in  遍历中,数组 遍历出的是 索引 值

 var arr = [{x:1},{y:2},{z:3}];
for(a in arr){
a; //0,1,2 数组的索引值
}

    3. 数组另两种遍历方式

      3.1 for(var i = 0;i < 10;i++){ ... }

 for(var i = 0;i < 10; i++){
...
// 同步执行
}

      3.2 $.each(arr, function(index【索引】,item【值】){ ... })

 $.each(arr, function(index【索引】,item【值】){
...
// 异步执行
});

    4. 序列化

      浅拷贝 只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝(例:assign())

      深拷贝 是将对象及值复制过来,两个对象修改其中任意的值另一个值不会改变,这就是深拷贝(例:JSON.parse()和JSON.stringify(),但是此方法无法复制函数类型

 // 深拷贝案例
var obj = {x:1,y:2,z:3};
JSON.stringify(obj); //string {'x':1,'y':2,'z':3};
typeof(JSON.stringify(obj)); //string
var str = JSON.stringify(obj);
JSON.parse(str); // object

    5. ajax 传参 数据方式

 var data = {
'name':_name,
'age':_age,
...
}
// ajax
data:{dataJson:JSON.stringify(data)} // 传参

 

上一篇:007-ant design 对象属性赋值,双向绑定


下一篇:xml 转换成对象(采用反射机制对对对象属性赋值)