window.onload = function(){
//属性的添加 ./[] .是取自身的属性 []可以是变量
var obj = {};
obj.name="sonia";
obj['age'] = 20;
console.log(obj['age']);
//实例
var obj2 ={};
obj2.name="jack";
var a = 'name';
console.log(obj2[a]); //obj2['name'] jack
//属性删除 delete
var obj3 = {};
obj3.name="sonia";
obj3.age=20;
obj3.state=false;
delete obj3.name; //删除属性 obj3.name obj['name']
// var obj3 = {};
// obj3.name="sonia";
// obj3.age=20;
// obj3.state=false;
// var age ='age';
// delete obj3[age];console.log(obj3);
//检测属性 判断对象中是否存在属性
// in 运算符
var obj4={
name:'sonia',
age:20
};
console.log('name' in obj4);
//使用对象的hasOwnProperty() 方法
var obj5={
name:'sonia',
age:20
};
//obj5.hasOwnProperty('name');
var a = 'name';
obj5.hasOwnProperty(a);
//!=undefined 值的判断
console.log(obj5.name !== undefined); //= 赋值 ==比较 ===全等 != !==
//if(a!='name'){} //0==='0' 类型匹配
//枚举属性
//for in
var arr = ['a','b','c','d'];
var o = {name:'sonia',age:20};
//对象
for(v in o){ //for(属性 in 对象)
console.log(v);//name age
console.log(o[v]); //sonia 20 o.v 不行 v是变量
};
//数组
for(a in arr){ //for(索引 in 数组)
console.log(a); //01234
console.log(arr[a]); //abcd
};
//
for(var i=0;i<10;i++){}
//forEach() 没有返回值
var arr2 = ['a','b','c','d'];
arr2.forEach(function(item,index){
console.log(item)
//return item
});
//map() 回调函数中支持return返回值
var arr3 = ['a','b','c','d'];
arr3.map(function(item,index){
return item;
});
//序列化 JSON.parse()//对象字符串转为对象(深拷贝) JSON.stringify()对象转为对象字符串
var o = {name:'sonia',age:20};
console.log(typeof JSON.stringify(o)) //string
console.log(typeof o);//object
//var o = {name:'sonia',age:20};
//var o2 = JSON.stringify(o);
//console.log(typeof JSON.parse(o2)); //obj
//深拷贝(双胞胎) 浅拷贝(引用 影子)
//数组 slice() concat() //返回新的数组
var arr4 = ['a','b','c','d'];
//var arrCopy = arr4.slice(0);
var arrCopy = arr4.concat();
arrCopy[2]='abc';
arr4 //["a", "b", "c", "d"]
arrCopy // ["a", "b", "abc", "d"]
//对象
var o = {name:'sonia',age:20};
var oCopy = JSON.parse(JSON.stringify(o));
oCopy.name='ccc';
oCopy;
//问题1:数组对象 var lists = [{name:'sonia1',age:20},{name:'sonia2',age:20},{name:'sonia3',age:20}]
//问题2:数组对象有x返回1,否则返回2
//var arr=[{x:1,y:2,z:3},{a:3,b:5,c:6},{l:6,m:8,n:9}];
}