声明对象的两种语法
- 方法一
let obj = {
'name': 'Ann',
'age': 18
}
- 方法二
let obj = new Object({
'name': 'Ann',
'age': 18
})
方法一是简写,方法二是标准写法。
- 注意:
- 对象都是以键值对的形式出现
- 键名是字符串,不是标识符,可以包含任意字符串
- 引号可以省略,省略之后只能写按标识符
- 就算引号省略了,键名也还是字符串
- 当键名有空格或中文等特殊符号是,必须加引号
增加或修改对象的属性
- 直接赋值
let obj = {'name': 'Ann'}
obj.name = 'Annie' // 修改属性
obj.age = 18 // 增加属性
//注: 如果对象已有的属性则为修改,没有的属性则为增加
- 批量赋值
let obj = {}
Object.assign( obj, {'name':'Annie', 'age': '18'})
修改对象的属性
- 改自身
obj['name']='Annie'
或批量改自身
Object.assign( obj, {'name':'Annie', 'age': '18'})
- 改共有属性
Object.prototype['toString']='xxx'
或 obj.__proto__['toString']='xxx' //不推荐
- 改原型
let obj = Object.creat(common)
或 obj.__proto__ = common //不推荐
删除对象的属性
- 方法一
let obj = {
name: 'Annie',
age: '18'
}
obj.name = undefined
执行结果为:
let obj = {
name: undefined,
age: '18'
}// 把name的属性值改为了 undefined,其属性名name仍存在
- 方法二
let obj = {
name: 'Annie',
age: '18'
}
delete obj.name
执行结果为:
let obj = {
age: '18'
} // 删除了属性名和属性值
查看对象的属性
- 查看自身单个属性
object.key
或 object['key']
- 查看自身所有属性
let obj = {
name: 'Annie',
age: 18
}
Object.keys(obj) // 查看所有属性名
Object.values(obj) // 查看所有属性值
Object.entries(obj) // 查看属性名和属性值
- 查看自身+共有属性
console.dir(obj)
- 判断一个属性是自身还是共有的
obj.hasOwnProperty('toString')
'name' in obj和obj.hasOwnProperty('name') 的区别
'name' in obj 判断一个对象属性或原型里面是否包含'name'的属性。
obj.hasOwnProperty('name') 判断一个对象是否拥有自身为'name'的属性,'name'必须是对象本身的一个成员,此方法不会去判断原型。