JS 对象基本介绍

159 阅读1分钟

定义

  • 无序的数据组合
  • 键值对的集合

声明对象的写法

let obj = {'name': 'huangjingjing',age: 18}
let obj = new Object({'name': 'huangjingjing',age: 18})

Tips

  • 键名是字符串,不是标识符,可以包含任意字符。
  • 引号可以省略,省略后只能写标识符。
  • 就算引号省略了,键名还是字符串 (通过Object.keys可以访问对象的键名)

用变量作为键名

let a = 'xxx'
let obj = {
  [a]: 111
}

对象属性的增删改查

删除属性

delete obj.xxxdelete obj['xxx']

判断是否删除成功 'name' in obj === false

查看属性

查看属性名 Object.keys(obj)

查看属性值 Object.values(obj)

查看每一个键值对的属性和值 Object.entries(obj)

let obj = {name:'jack',age:18}
Object.keys(obj) // ["name","age"]
Object.values(obj)  // ["jack",18]
Object.entries(obj) // [["name","jack"],["age",18]]

查看一个属性是自身的还是共有的 obj.hasOwnProperty('toString')

修改或增加属性

直接赋值

let obj = {name:'jack',age:18}
obj.name = 'rose' // "rose",如果对象没有这个属性则会添加
// obj = {name: "rose", age: 18}
或
obj['name'] = 'jack' // "jack"
// obj = {name: "jack", age: 18}

批量赋值

Object.assign(obj, {age: 18, gender: 'man'})

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

'name' in obj 是判断 obj 对象本身有没有 name 属性。而obj.hasOwnProperty('name') 是判断 obj 的原型上有没有 name 属性。一般来说对象的原型上会有 constructortoStringvalueOf等属性。