JS 对象基本用法

125 阅读2分钟

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对象的私有属性。(只能判断私有属性)

另外附图验证:

image.png