JS 对象基本用法

250 阅读2分钟

对象是JS数据类型当中的唯一一种复杂类型。它是无序的数据集合,用于存储各种键值对和更复杂的实体。

  1. 声明对象
let obj = { 'name': 'frank', 'age': 18 }

let obj = new Object({'name': 'frank'})

其中,第一行是比较普遍的声明方式,第二行是标准的声明方式。

注意:

  • 键名是字符串,不是标识符,可以包含任意字符

  • 引号可省略,省略之后就只能写标识符,键名里有特殊字符不能省略

就算引号省略了,键名也还是字符串

变量x做属性名:{ [x]:value }

  1. 如何删除对象的属性

设属性名为xxx,则删除xxx属性的操作为:

delete obj['xxx'] delete obj.xxx

确认是否删除完成,结果为false时,对象中不含此属性名

'xxx' in obj // false

只删除属性值,不删除属性名的操作:

obj.xxx = undefined

确认删除后的结果:含有属性名,但是值为 undefined

'xxx' in obj && obj.xxx === undefined

  1. 如何查看对象

查看对象obj的自身所有属性: Object.keys(obj)

查看对象obj的自身所有值: Object.values(obj)

查看对象的属性和值: obj Object.entries(obj)

查看自身属性+共有属性:console.dir(obj)

判断一个属性是自身属性还是共有属性: obj.hasOwnProperty('property')

查看某一属性: obj['key'] obj.key

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

直接赋值:

let obj = {name: 'frank'} 
obj.name = 'frank' 
obj['name'] = 'frank' 

批量赋值:

Object.Assgin(obj, {age: 18, gender :'male'})

增加基本同上,已有属性则改;没有属性则增。

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

'name' in obj 可以确定obj中是否有name属性

obj.hasOwnProperty('name') 可以确认obj中的name属性是自身属性还是原型中的共有属性

  1. 关于原型

每个对象都有原型,原型里存着的是对象的共有属性;对象的原型也是对象,对象的原型也有原型,是null.

在修改共有属性的时候,无法通过对obj自身的操作来增加或修改共有属性。一般来说,不要修改原型。 有修改隐藏属性的需求时,推荐使用Object.create.