JS 对象(object)的特点:
-
无序的数据集合。
-
键值对的集合。
1.声明对象的两种语法
let obj={'name1':'xxx','name2':'xxx'}
let obj=new Object({'name':'xxx'})
2.如何删除对象的属性
-
使用
delete obj.xxx或delete obj['xxx']可以删除 obj 中 xxx 属性。 -
使用
obj.xxx = undefined可以删除 obj 中 xxx 的属性值,相当于赋予 xxx 属性一个空值。
需要注意两种用法的区别:前者为完全删除属性,后者为保留属性但属性值为空。
3.如何查看对象的属性
查看自身属性:Object.key(obj)
查看自身属性+共有属性:console.dir(obj)
4.如何修改或增加对象的属性
- 直接赋值:
-
let obj={name:'xxx'} -
obj.name='xxx' -
obj['name']='xxx' -
obj['na'+'m'+'e']='xxx' -
let key = 'name';obj[key]='xxx'
以上 5 种方法中所有的'name'都为字符串,在方法 4 中也是因为 na、m、e 都是字符串,所以可以相加。
- 批量赋值:
通过Object.assign (obj.{name1:xxx,name2=xxx}),可以直接给 obj 中添加 name1 和 name2 属性,值为 xxx。
'name' in obj 和 obj.hasOwnProperty('name') 的区别
'xxx' in obj在查看 xxx 是否为 obj 的属性时,不会区分该属性是否为共有属性。
obj.hasOwnProperty('xxx')可以查看 xxx 是自身的属性还是共有属性,返回 true 时为自身属性,false 为共有。
其他细节
-
键名是字符串,并非标识符,字符串可以包括任意字符。
-
写键名时,引号是可以省略的,但省略后只能写标识符,必须按照标识符规范输入。
-
就算引号被省略,按照标识符规范输入,它也依然是字符串。