1. 声明对象的两种语法
第一种:
let obj = { 'name' : 'hhh' , 'age' : 18}
第二种:
let obj = new Object({'name' : 'hhh' , 'age' : 18})
name 和 age 是属性名,而对应的是属性值。
虽然两种写法效果是一样的,但是官方是推荐第二种写法的,不过人们常用的却是第一种,因为写起来方便。
2. 删除对象的属性
语法:delete obj.xxx 或 delete obj[‘xxx’]
判断是否真正删除掉了属性可以使用如下语句:
‘xxx’ in obj == false
3. 如何查看对象的属性
想明白如何查看对象属性首先要知道原形的概念,原形是一个在内存中的对象,它里面存储着所有对象共有的属性,例如 toString、constructor、valueOf 等等。
每个对象都保存着原形对象的内存地址,这样就可以继承原形中的各种属性,例如 obj._proto_就存着原形对象的地址。
因为原形本身也是对象,所以它也会有_proto_ 属性,但是这个属性为Null。
3.1 查看对象所有属性:
所以,查看对象属性的方式有下面几种:
- Object.keys(obj) 查看自身所有属性。
- console.dir(obj) 查看自身和共有属性。
- obj.hasOwnProperty(‘toString’) 判断一个属性是自身的还是共有的。
3.2 根据名称查看对象属性
- 中括号语法:obj[‘key’]
- 点语法:obj.key
4. 如何修改或增加对象的属性
例如:
obj.name = 'hhh'
执行上面语句,如果 obj 没有 name 属性那么将增加 name 属性并赋值 hhh ,如果原本就有 name 这个属性,那么将值赋给 name 属性。
4.1 单个赋值
- let obj = { name: ‘hhh’}
- obj.name = ‘hhh’
- obj[‘name’] = ‘hhh’
- obj[‘na’ + ‘me’] = ‘hhh’
- let key = ‘name’ , obj[key] = ‘hhh’
4.2 批量赋值
Object.assign(obj, {name: ‘hhh’, age: 666})
5. ‘name’ in obj和obj.hasOwnProperty(‘name’) 的区别
第一种是判断 name 这个属性名是否在 obj 这个对象中,但是并不能区分是在对象本身,还是在原形中。
第二种可以判断属性是否在对象本身。不会判断原形中是否存在。