对象 Object是唯一一种复杂的数据类型
定义:
-
无序的数据集合
-
键值对的集合
目录
- 1:声明对象的两种语法
- 2:如何删除对象的属性
- 3:如何查看对象的属性
- 4:如何修改或增加对象的属性
- 5:'name' in obj和obj.hasOwnProperty('name') 的区别
1:声明对象的两种语法

- 标准写法
let obj= new Object({'name':'属性值','age':'233'})
简写(常用)
let obj={'name':'属性值','age':'233'}
- 匿名对象写法
console.log({'name':'属性值','age':'233'})
键名是字符串,省略了也还是字符串
使用Object.keys(obj)可以得到所有的key
2:如何删除对象的属性
关键词:delete
写法:
delete obj.xxx
delete obj['xxx'] //引号不能少,没引号的是变量
检查属性在不在对象里
'xxx' in obj //在就返回true,不在返回false
3:如何查看对象的属性
查看自身所有属性
Object.keys(obj)
查看自身+共有属性
console.di r(obj)
或者自己依次用Object.keys 打印出obj. __ proto—
判断—个属性是自身的还是共有的
obj.hasOwnProperty('toString')
两种方法查看属性
中括号语法:(新人推荐使用这种,不会弄混字符串和变量)
obj['key']
点语法:
obj.key
4:如何修改或增加对象的属性
直接赋值
let obj = {name: 'frank'}
obj.name = 'frank'
obj['name'] = 'frank'
obj['na'+'me'] = 'frank'
let key = 'name'; obj[key] = 'frank'
批量赋值
前面是对象的名字,后面是对象里的键值对
Object.assign(obj, {age: 18, gender: 'man'})
修改隐藏属性
let obj = Object.create(common)
obj.name = 'frank'
let obj2 = Object.create(common)
obj2.name = 'jack'
5:'name' in obj和obj.hasOwnProperty('name') 的区别
hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中(非继承属性)是否具有指定的属性, 如果 object 具有带指定名称的属性,则 hasOwnProperty 方法返回 true,否则返回 false。此方法不会检查对象原型链中的属性;该属性必须是对象本身的一个成员。
配合Object.create可以很明显的看出来,in会检查隐藏属性,hasOwnProperty不会
