1.声明对象的两种语法
1.1写法
let obj = {'name':'frank','age':18}/*简写*/
let obj = new Object{'name':'frank'}/*正规写法*/
1.2细节
- 键名是
字符串,不是标识符,可以包含任何字符 - 引号可以省略,省略之后就只能写
标识符了 - 就算引号省略了,键名也还是字符串
总之,键名只能是
字符串,就算不是字符串,最后也会变成字符串
2.如何删除对象的属性
2.1语法
delete obj.xxx
delete obj['xxx']
2.2举例
3.如何查看对象的属性
3.1查看自身属性
- 语法
Object.keys(obj)
Object.entries(obj)
- 举例
3.2 查看自身和共有属性
- 语法
console.dir(obj)
- 举例
3.3 两种查看属性的语法
- 中括号语法
obj['key']
- 点语法
obj.key
- 推荐
新人推荐使用中括号语法,因为点语法会误导人,让人以为key不是字符串。等自己确定不会弄混两种语法,再改用点语法
4.如何修改或增加对象的属性
4.1 修改和增加自身属性
- 直接赋值
- 批量赋值
4.2 修改和增加共有属性
-
无法通过自身修改或增加共有属性
-
只能在原型里修改或增加原型上的属性
注意:一般修改原型,会导致很多问题,比如代码崩溃,代码异常。要是想改,只能一开始就改,中间改来改去会很麻烦
4.3 修改隐藏属性
删除原型
obj.__proto__ = null
不推荐使用_proto_
推荐使用Object.create
5.'name' in obj和obj.hasOwnProperty('name')的区别
- 'name' in obj 是用来检查对象是否包含有属性名,这个属性名有可能是
对象自身的属性,也可能是该对象的共有属性。
- obj.hasOwnProperty('name')是用来检查对象自身是否包含属性名,这个属性名只能是
自身的属性。