JS对象基本用法

98 阅读2分钟

声明对象的两种语法

对象定义:1.是无序的数据集合 2.键值对的集合 声明对象的两种语法:

  1. let obj ={'name':'emma','age':18}
  2. let obj = new Object({'name':'emma','age':18}) 注意第2种是标准写法,但是第一种是大家普遍使用的写法,还有一种无对象名的声明方法:console.log({'name':'emma','age':18}),但是这种对象只能使用一次

这里有一点值得注意的是对象的属性名(键名)是字符串不是标识符

如何删除对象的属性

若想删除对象的属性,使用delete obj.xxx或者 delete obj['xxx'],若想判断对象中是否包含此属性可用'xxx' in obj

若为false则,不是对象的属性,此时注意,若显示的是undefined,则表示仍具有该属性,只不过值为undefined

如何查看对象的属性

  1. 查看属性名可用Object.keys(obj)
  2. 查看属性名对应的的值可用Object.values(obj)
  3. 查看对象的键值对可以使用Object.entries(obj)

4. 查看自身和共有属性console.dir(obj),obj.__proto__也可以查看对象的原型但是不推荐使用
5. 判断一个属性是自身的还是共有的属性obj.hasOwnProperty('toString') 6. 查看属性的两种方法:

  • obj.xxx
  • obj['xxx']

如何修改或增加对象的属性

  1. 赋值:
  • 直接赋值,注意属性名是字符串
  • 批量赋值:Object.assign(obj,{'p1':1,'p2':2})

2. 修改属性:

  • 对象无法通过自身修改或增加共有属性,例如:obj1.toString='xxx'是不会修改到obj2的toString属性的
  • 若想修改可以使用obj.__proto__.toString ='xxx'Object.prototype.toString = 'xxx',但是不推荐更改共有属性会导致后续代码出现很多问题
  1. 修改隐藏属性

可以看出,虽然obj的隐藏属性更改为common,但是common的隐藏属性仍旧可以被obj使用

推荐使用Object.creat(common)

建议首先先规定隐藏属性然后在定义其他属性和属性值

'name'in obj和obj.hasOwnProperty('name')的区别

'name'in obj是判断name属性名是否在obj对象中,obj.hasOwnProperty('name')是判断name属性是obj对象的共有属性还是特有属性