JS 对象基本用法

481 阅读2分钟

声明对象的两种语法

对象的定义

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

写法

  • 1.常用的简便写法 let obj = {'name': 'frank', 'age':18}
  • 2.正规的写法:let 对象名=new Object({'键名(属性名)':'键值(属性值)'}) let obj = new Object({'name': 'frank'})

注意

  • 键名是字符串,不是标识符
  • 引号可以省略,就算引号省略了,键名还是字符串

Object.keys(obj)可以获得名为obj的对象的所有键名(属性名)(key)!

如何删除对象的属性

  • 1.delete obj.xxx
  • 2.delete obj['xxx']

以上两种写法都可以删除对象obj中名为xxx的属性。

判断对象中还有没有某个属性名:

'xxx' in obj === ture
'xxx' in obj === false

xxx是要判断的属性名,obj是对象名。
存在返回true,不存在返回false。

判断含有属性名,但属性值是不是undefined:

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

xxx是要判断的属性名,obj是对象名。
属性值为undefined时返回undefined,否则返回false。

如何查看对象的属性

  • 查看自身所有属性:Object.keys(obj)
  • 查看自身+共有属性:console.dir(obj) 或者 用Object.keys打印出obj._ _ proto_ _
  • 如何判断一个属性是自身的还是共有的obj.hasOwnProperty('XXX')
  • 查看某一个属性:obj['name']或者obj.name

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

直接赋值

  • let obj={'name':'frank'}
  • obj.name='frank'其中name是字符串
  • obj['name']='frank'
  • obj['na'+'me']='frank'
  • let key='name';obj[key]='frank'
  • 批量赋值可以用Object.assign(obj,{'age':18,'gender':'man'}),其中obj是对象名,age键名,18键值
  • 修改共有属性Object.prototype['toString']='xxx'
  • 修改隐藏属性let obj = Object.create(common)

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

  • 'name' in obj查看属性name是否在obj里,但是它无法区分这个属性是自身特有的还是共有的。
  • obj.hasOwnProperty('name')用来检测name是否为obj特有的属性还是共有的属性,如果是特有的返回true,如果是共有的则返回false