JS对象基本用法

227 阅读1分钟

声明对象的两种语法

let obj = {'name' : 'xxx' , 'age' : 18}
let obj = newObject({'name' : 'xxx'})
  • 建名是字符串,不是标识符,可以包含任意字符
  • 建名引号可以省略,省略之后只能写标识符

变量作属性名

let p1 = 'xxx'
let obj = {p1 : 1}//属性名为p1
let obj = {[p1] : 1}//属性名为xxx
  • 不加[]的属性名会自动变成字符串
  • 加[]的属性名则会当做变量求值

删除对象的属性

不含属性名

var obj = {'xxx' : 1}
delect obj.xxx
'xxx' in obj //false
obj//{}

或者

var obj = {'xxx' : 1}
delect obj['xxx']
'xxx' in obj //false
obj//{}

含属性名

var obj = {'xxx' : 1}
obj.xxx = undefined
'xxx' in obj //true
'xxx' in obj === undefined//false
obj//{'xxx' : undefined}

查看对象属性

  • 查看对象自身所有属性Object.keys(obj)
  • 查看对象自身+共有属性console.dir(obj)
  • 判断属性是否是对象自身的还是共有的obj.hasOwnProperty('属性名')
  • 查看对象某一个属性obj.xxx和obj['xxx']

修改或增加属性

直接赋值

let obj = {'xxx': '111'}
obj.xxx = '111' 
obj['xxx'] = '111' 
obj['xx'+'x'] = '111'
let key = 'xxx'; obj[key] = '111'

批量赋值

Object.assign(obj, {'xxx': 111, 'yyy': '222'})

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

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

修改隐藏属性

let common = {'xxx':1}
let obj = Object.create(common)

例子:

let common = {'zzz':3}
let obj = Object.create(common)
Object.assign(obj,{'xxx':1,'yyy':2})
obj

最后得到: