《学习笔记——JS对象的基本语法》

109 阅读2分钟

JS对象的基本语法

声明对象的两种方法

//第一种:简略写法
let obj = {'name':'frank','age':18}

//第二种:规范写法
let obj = new Object({'name':'frank'})
  • 键名是字符串不是标识符,可以包含任何字符

  • 引号可以省略,省略之后值可以写标识符

  • 省略引号键名依旧是字符串

属性名与属性值

属性名:每个key都是对象的属性名

属性值:每个value都是对象的属性值

对象的隐藏属性

  • JS中每一个对象都有一个隐藏属性

  • 这个隐藏属性储存着其共有属性组成的对象的地址

  • 这个共有属性组成的对象叫做原型

  • 也就是说,隐藏属性储存着原型的地址

如何删除对象的属性

delete obj .xxx

delete obj['xxx']
//检验方法1不含属性名:
'xxx' in obj === flase

//检验方法2含有属性名,但值为undefined:
'xxx' in obj && obj.xxx === undefined

如何查看对象的属性

  • 查看自身所有属性

    Object.keys(obj)

  • 查看自身+共有属性

    console.log(obj) || 依次用Object.keys答应出obj.proto

  • 判断一个属性是自身还是共有

    obj,hasOwnProperty('toString')

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

  • 直接赋值
//name 是字符串
let obj = {name: 'frank'}
//name 是字符串
obj.name = 'frank'
//name 是字符串
obj['name'] = 'frank'
  • 批量赋值
//obj:赋值对象
Obj.assign(obj,{age:18gender:'man'})
  • 修改或增加共有属性

一半情况下不推荐修改原型共有属性,会引起很多的问题


//无法通过自身修改或增加共有属性

//obj与obj2共有toString
let obj = {},obj2 = {}
//只会修改obj自身属性,obj2.toString还在原型上
obj.toString = 'xxx'

如果偏要修改或增加原型上的属性

//不推荐用__proto__
obj.__proto__.toString = 'xxx'

Object.prototype.toString = 'xxx'

增删改查总结

删:

  • delete obj['name']

查:

  • Object.keys()obj
  • console.dir()obj
  • obj['name']
  • obj.name————这里的name是字符串
  • obj[name]————这里的那么是变量

改:

  • 改自身:obj['name'] = 'jack'
  • 批量改自身:Object。assign(objk,{age:18})
  • 改共有属性:Object.prototype['toString'] = 'xxx'
  • 改原型:let obj = Object.create(common)

增:

  • 基本同上,已有属性则改,没有属性则增

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

  • 'name' in obj:用来判断obj对象不含某属性

  • obj hasOwnProperty('name'):用来判断一个属性是obj自身的还是原型共有属性