JS对象
js对象可以是任何事物,可以是无序的数据集合,可以是键值对集合.
声明对象
- let 对象名 = {属性名:属性值}
这是熟悉的写法,不是正规的写法
实例let obj = {'name':'peng','age':18}
- let 对象名 = new Object ({属性名:属性值})
这是正规写法
实例:let obj = new Object({'name':'peng','age':18})
- console.log({属性名:属性值})
实例
console.log({'name':'peng','age':18})
js对象是动态的----可以新增删除修改属性
1、删除属性
delete obj.xxx或delete obj['xxx']
判断一个属性是否自身属性
'name' in obj
判断一个属性是自身的还是共有的
obj.hasOwnProperty('tostring');
2、查看属性
- 查看自身所有属性
let obj = {'name' : 'peng', 'age':18}
Object.keys(obj) //{'name', 'age'} 查看所有key
Object.values(obj) //{'peng', 18} 查看所有值
Object.entries(obj) //查看所有key和值
- 查看自身属性+共有属性 console.dir(obj)
- 查看单个属性的值
let obj = {'name' : 'peng', 'age':18}
obj['name'] //'peng'
obj.name //'peng'
obj[name] //不加引号,表示name是一个变量,要先求变量的值,再得到最终的结果
obj.name 等价于 obj['name']
obj.name b不等价于 obj[name]
name是字符串,[name]是变量
3、修改或增加属性(写属性)
在JS中修改和增加的操作是一样的。如果属性存在,修改就是修改;如果属性不存在,修改就是增加。
- 直接赋值
let obj = {'name' : 'peng'}
obj.name = 'peng'
obj['name'] = 'peng'
let key = 'name'; obj[key] = 'peng'
- 批量修改
Object.assign(obj,{'age': 18, gender: 'man'})
改公有属性
Object.prototype['toString']='name'
改原型
let obj = Object.create(common);
obj.name = 'peng'
4、注:'name' in obj和obj.hasOwnProperty('name') 的区别?
'name' in obj:用于判断属性'name'是否为对象obj的属性,只要通过对象能访问到属性就返回true;
obj.hasOwnProperty('name')用于判断属性'name'是否为对象obj的共有属性,只在属性存在于实例中时才返回true。