声明对象的两种语法
let obj = {
'name' : '我是一个对象'
}
let obj = new Object({
'name' : '我是一个对象'
})
1. key是字符串的情况:
key是字符串,上面的例子中name就是那个key,哪怕我没写引号,它也会自动变成字符串。
在没有加引号的情况下,如果key的值是可以计算的,它会先计算然后再转为字符串。这很烦,所以如果不是必须的,一定要记得给key加引号。
2. key是变量的情况:
let a = "name"
let obj = {
[a]: '我是一个对象'
}
用中括号把变量名括起来就可以了,这样就会先计算括号里的变量值
3. key是symbol的情况:
let a = Symbol()
let obj = {
[a]: '我是一个对象'
}
如何删除对象的属性
let 我 = {
'age': 15,
'勤劳': true,
'勇敢':true,
'聪慧' : true,
'善良': true,
'懒': false,
'馋':false
}
哎,暴露了年龄赶紧隐藏起来
我.age = undefined//删除属性值
我怎么会有懒和馋这两种属性呢!即使是false也不该有!
delete 我.懒//删除属性
delete 我.馋//删除属性
如何查看对象的属性
下面我来给大家看一下怎么展示我的属性
这里的属性是不包含共有属性的,如果还需要查看共有属性可以使用:
console.dir(我)
或者,直接打印:
console.log(我.__proto__)
如何判断属性是不是对象的:
我们可以用下面这种方法,但是这种方法没办法知道这个属性是对象自己的还是原型的
'name' in obj//没办法知道这个属性是自己的还是原型的
hasOwnProperty()方法可以帮助判断这个属性是不是对象自己的:
我.hasOwnProperty('toString')
查看单个属性值
如何修改或增加对象的属性
- 通过取值的方式直接赋值
我.勤劳 = false
我['勤劳'] = true
- 批量赋值
Object.assign(我,{坚毅:true,美丽:true,可爱:true})
- 共有属性能改么?
我.toString = "我改掉了没?"
”你没有”,读的时候可以读到共有属性,但是写的时候只能写在自己身上。
实在想改,就要去原型上改:
我.__proto__.toString = "我改掉了没?"
"你改掉了,但是盆友你是在玩火",没事干千万千万别改啊!