1、声明对象的两种语法
例如创建一个obj对象,包含name和age两个属性:
let obj={'name':'user','age':18}
let obj=new Object ({'name':'user','age':18})
需要注意的是键名是字符串,不是标识符,引号内可以是任意字符。
省略引号的写法只能按照写标识符的规则去写。
2、如何删除对象的属性
删除对象属性有如下两种方法:
delete obj.name
delete obj['name']
delete的用法主要是用于删除对象属性的,无法用于删除对象。
3、如何查看对象的属性
查看属性有两类:查看自身属性以及查看共有属性。
查看自身属性的方法:
Object.keys(obj) //查看属性名
Object.values(obj) //查看属性值
查看自身属性以及共有属性:
console.dir(obj)
判断一个属性是否属于自身属性的方法:
obj.hasOwnProperty('toString')
//判断toString是否是obj对象的自身属性,返回turn或false
4、如何修改或增加对象的属性
修改对象属性的方法
let obj={'name':'owner'} //修改obj对象的属性,改后只有一个值为owner的name
let obj=new Object({'name':'owner'}) //同理
增加属性的方法:
obj.gender='man' //增加一个gender属性,不会替换已有的属性
obj['gender']='man' //同理
注:一般来说无法通过对象自身修改或增加共有属性,除非指定共有属性的隐藏键名进行修改。
修改隐藏属性推荐使用Object.create方法
5、'name' in obj和obj.hasOwnProperty('name') 的区别
先给出结论: in方法只能判断name属性是否在obj中,无法判断name是否是共有属性还是自身属性。
验证:
创建一个obj对象拥有name和age两个属性,
一、用两种方法验证name是否在obj上,结果均为turn。
二、obj隐藏属性里拥有toString这个属性,下面用两种方法判断toString是否在obj上:
'toString' in obj //true
obj.hasOwnProperty('toString') //false
未主动声明toString为obj的属性的情况下toString为obj的隐藏属性,得到的返回值可以得知两者的区别:
'toString' in obj判断某个属性是否在obj对象上,不区分是否为共有属性。(包含共有私有属性)
obj.hasOwnProperty('toString')只能判断某个属性是否是obj对象的私有属性。(只能判断私有属性)
另外附图验证: