JS 对象基本用法

一、声明对象的两种语法

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

二、如何删除对象的属性

  • delete obj .xxx或delete obj ['xxx']
    如使用undefined,属性名还在,只是属性值为undefined

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

  • 'xxx' in obj 可查看xxx是不是obj的属性名
  • xxx' in obj && obj.xxx可查看属性值

三、如何查看对象的属性

  • 查看自身所有属性
    Object.keys(obj) 查看属性名

Object.values(obj)查看属性值

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

  • 查看自身及共有属性
    console.dir(obj)
    或者自己依次用Object.keys打印出obj.__ proto__
  • 判断一个属性是自身的还是共有的
    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')查看

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容