JS 对象基本用法

98 阅读1分钟

声明对象

let obj = { 'name': 'frank', 'age': 18 }
let obj = new Object({'name': 'frank'})

如何删除对象属性

delete obj['name']
'name' in obj // false
obj.hasOwnProperty('name')  // false

如何查看对象的属性

  • 查看自身所有属性

    Object.key(obj) //查看对象所有属性的键

    Object.value(obj) //查看对象所有属性的值

    Object.entries(obj) //查看对象所有属性

  • 查看自身+共有属性

    console.dir(obj)

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

    obj.hasOwnProperty('toString')

  • 两种方法查看某个属性

    1. 中括号语法:obj['key']
    2. 点语法:obj.key

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

改自身 obj['name'] = 'jack'   obj.name='jack'
批量改自身 Object.assign(obj, {age:18, ...})
改共有属性 obj.__proto__['toString'] = 'xxx'
改共有属性 Object.prototype['toString'] = 'xxx'
改原型 obj.__proto__ = common
改原型 let obj = Object.create(common)
注:所有 __proto__ 代码都是强烈不推荐写的

修改隐藏属性

用法:当有多个对象有相同的多个属性时

推荐使用Object.create()

let common = {hairColor:'black', 国籍:'中国'}
let obj = Object.creat(common)
obj.name = 'frank'
let obj2 = Object.creat(common)
obj2.name = 'jack'

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

'name'in obj// 判断的是obj自身包括其原型属性是否有name属性

obj.hasOwnProperty('name')// 判断的是obj自身是否含有name属性