1.声明对象的两种语法
let obj1 = {'name':'luke','age':20} //快速方便的写法
let obj2 = new Object({'name':'luke'}) //正规的写法
放到chrome的控制台执行,可以看到两个声明的方法都是可以的:
2.如何删除对象的属性
obj2.name === undefind //只能使对应的属性值删去,属性名还在
delete obj2.name //删去对象的属性值,属性名和属性值都不在
delete obj2['name'] //删去对象的属性值,属性名和属性值都不在
3.如何查看对象的属性
查看自身属性
Object.keys(obj1)
放到控制台执行,可以查询到两个自有属性name
和age
查看自身属性+共有属性
console.dir(obj1)
判断一个属性是自身还是共有的
obj1.hasOwnProperty('toString')
通过上面对比看出,toString为共有属性,非自有属性,所以返回结果false。
4.如何修改或增加对象的属性
直接赋值
let obj1 = {name: 'frank'} // name 是字符串
obj1.name = 'frank' // name 是字符串
obj1['name'] = 'frank'
这三个直接赋值方法是一样的效果。
批量赋值
Object.assign(obj1, {age: 18, gender: 'man'})
控制台执行代码效果:
5.'name' in obj和obj.hasOwnProperty('name') 的区别
'name' in obj1 //查'name'是否在obj1这个对象上,但无法判断是自有的还是共有属性
obj1.hasOwnProperty('name') //查'name'是自有属性还是共有属性
看上去返回的结果都是true,但是意义不同,'name' in obj1
只能看在不在对象上,但不能判断属性是否是自身还是共有的,所以要用到obj1.hasOwnProperty('name')
。