JS 对象基本用法

95 阅读2分钟

声明对象的两种语法

  1. let obj = { 'p1': 1, 'p2': 2 }

let obj = new Object({'p1': 1})更规范 3. console.log({ 'name': 'frank, 'age': 18 })

增删改查

刪除对象的属性 delete obj.xxxdelete obj['xxx']

删除某项属性的值 obj.xxx = undefined

查看是否含有某属性或值

  • 不含属性名: 'xxx' in obj === false(此方法同时查找该对象的自身属性和共有属性)
  • 含有属性名,但是值为undefined:'xxx' in obj && obj.xxx === undefined

查看自身属性

  • 属性 Object.keys(obj)
  • Object.Values(obj)
  • 属性和值 Object.entries(obj)

查看自身属性和共有属性

  • console.dir(obj)

查看共有属性

  • obj.__proto__

查看某一项属性

  • 中括号语法: obj['name']
  • 点语法: obj.name

判断某属性是否为自身属性

  • obj.hasOwnProperty('toString')(此方法只查看该对象自身是否含有该属性)

增改

直接赋值

  • let obj = {xxx: 'yyy'}
  • obj.xxx = 'yyy'
  • obj['xxx'] = 'yyy'
  • obj['x'+'xx'] = 'yyy'先求xxx的值
  • let key = xxx;obj[key] = 'yyy'先声明一个变量key,则中括号语法中key不需要加引号
  • Object.defineProperty(obj, prop, descriptor)直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。

批量赋值

  • Object.assign(obj,{p1:1,p2:2})

注意

字符串与变量

  • 在中括号语法中,加引号的为字符串,不加引号的为变量;在点语法中,字符串不加引号。
  • 引号可以省略,省略后只能写成标识符。
  • 前期使用中括号语法避免出错。

原型与共有属性

  • 原型是对象,共有属性是属性,原型包含共有属性
  • 包含所有共有属性的原型称为对象的根
  • 对象的根的原型为null
  • obj.__proto__存储该对象的原型的地址
  • 推荐使用let obj = Objcet.create(common)给对象创建一个原型以进行修改。common和其原型形成原型链。