JS 对象基本用法

一、声明对象的两种语法

  • let obj = { 'name' : 'frank' , 'age' : 18}
  • let obj = new Object ({ 'name' : 'frank'})
    两种写法都可以,只是第二种更规范
  • 细节
    键名是字符串,不是标识符,可以包含任意字符
    引号可以省略,但键名还是字符串,省略之后就只能写标识符

二、如何删除对象的属性

  • delete obj .xxx或delete obj ['xxx']
    如使用undefined,属性名还在,只是属性值为undefined
JS 对象基本用法_第1张图片

而使用delete obj.name,name及其属性值都没了

JS 对象基本用法_第2张图片
  • 'xxx' in obj 可查看xxx是不是obj的属性名
JS 对象基本用法_第3张图片
  • xxx' in obj && obj.xxx可查看属性值
JS 对象基本用法_第4张图片

三、如何查看对象的属性

  • 查看自身所有属性
    Object.keys(obj) 查看属性名
JS 对象基本用法_第5张图片

Object.values(obj)查看属性值

JS 对象基本用法_第6张图片

Object.entries(obj)查看属性名和属性值

JS 对象基本用法_第7张图片
  • 查看自身及共有属性
    console.dir(obj)
    或者自己依次用Object.keys打印出obj.__ proto__
JS 对象基本用法_第8张图片
  • 判断一个属性是自身的还是共有的
    obj.hasOwnProoerty('name')
    如是自身的则返回true,如为共有则返回false

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

修改或增加属性

  • 直接赋值
    let obj ={name:'frank'}
    obj.name='frank'
    obj['name']='frank'
    obj['na'+'me']='frank'
    let key= 'name'; obj[key] ='frank'
  • 批量赋值
    Object.assign(obj,{age:18,gender:'male'})

修改或增加共有属性
obj.__proto__.toString='xxx' 不推荐此方法
Object.prototype.toString='xxx'
一般不要修改原型,会出现很多问题

修改隐藏属性

  • 不推荐使用__ proto__
let obj ={name:'frank}
let obj2 ={name:'jack'}
let common ={kind:'human'}
obj.__proto__ =common
obj2.__proto__ =common
  • 推荐使用Object.create
let obj =Object.create(common)
obj.name ='frank'
let obj2 =Object.create(common) 
obj2.name ='jack'

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

'name' in obj 是查看name是否为obj的属性,但当使用'toString in obj' 时也返回true,所以隐藏属性无法使用此写法。
应该使用obj.hasOwnProperty('toString')查看

JS 对象基本用法_第9张图片

你可能感兴趣的:(JS 对象基本用法)