JS 对象基本用法

177 阅读1分钟

一、声明对象的两种语法

// 正规语法
let obj = new Object({ 'name': 'dongdong' })

// 简单语法
let obj = { 'name': 'dongdong', 'age': 18 }

二、如何删除对象的属性

使用 delete 操作符:

let obj = { name: 'dongdong', age: 18 }
'name' in obj    // true

delete obj.name
'name' in obj    // false

三、如何查看对象的属性

let obj = { name: 'dongdong', age: 18 }

obj.name    // "dongdong"
obj['age']  // 18
Object.keys(obj)    // ["name", "age"]

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

直接赋值:

let obj = { name: 'dongdong' }

obj.name = 'barry'

obj['name'] = 'barry'
obj['na' + 'me'] = 'barry'

let key = 'name'
obj[key] = 'barry'

批量赋值:

let obj = { name: 'dongdong' }
Object.assign(obj, { age: 18, gender: 'man' })

obj    // {name: "dongdong", age: 18, gender: "man"}

对于增加和修改来说,已有属性则改,没有属性则增。

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

hasOwnProperty 会区分属性是自身的还是继承的,而 in 不会区分。

let obj = { name: 'dongdong' }

'name' in obj    // true
obj.hasOwnProperty('name')    // true

'toString' in obj    // true
obj.hasOwnProperty('toString')    // false

以上代码,toString 属性存在于原型对象上,而 in 仍然返回 true,hasOwnProperty 则返回 false,表示对象本身不存在 toString 属性。