对象的基本概念
- 定义:无序的数据组合;键值对的集合。
写法:
var obj = {'name':'chen','age':18} //日常简写方法
var obj = new Object({'name':'chen','age':18}) //正规完整写法
console.log({'name':'chen','age':18}) //直接引用省略变量名
- 属性名:每个key都是对象的属性名(property name)。 ```javascript //特殊属性名 let obj = { 1:’a’,3.2:’b’,1e2:true,1e-2:true,.234:true,0xFF:true };//所有属性名都会变成字符串 Object.keys(obj)//此命令可以得到对象的所有ke值
//引用变量做key的情况 let a = ‘name’ let obj = {[a]:’chen’}//此种情况key为’name’ let obj = {a:’chen’}//此种情况key为’a’
- 属性值 :每个value都是对象的属性值(property value )。
- 对象的隐藏属性**:js中每一个对象都有一个隐藏属性,该属性储存着共有属性的对象的地址,这个共有属性组成的对象叫原型,也就是说对象的隐藏属性储存着原型的地址。**
3. 注意细节:键名是字符串,可以包含任意字符,可以省略引号,有特殊字符时不能省略,**就算省略引号键名也为字符串。(所以说就老老实实加上引号) **
<a name="LbeQX"></a>
## 对象的增删改查:
1. 删除属性:
```javascript
let obj = {
'name':'chen','age':18
}
delete obj.name //obj = {'age':18}
delete obj.['name'] //obj = {'age':18}
obj.name = undefined //只是删除属性'name':'chen'中的属性值,使其为空,并不是直接将属性删除。
'name' in obj //返回false,因为obj中的属性'name':'chen'已经通过delete删除。
'name' in obj === undefined //并不能判断有没有该属性。因为当属性值为undefined时,此等式也相等。
- 读(查)属性: ```javascript let obj = { ‘name’:’chen’,’age’:18 }
obj.keys //返回对象中的所有属性名 obj.value //返回对象中的所有属性值
console.dir(obj)//返回obj中的所有属性,包括自身属性和共有属性
obj.hasOwnProperty(‘toStroing’) // hasOwnProperty判断属性为对象的自身属性。
3. 修改或者增加属性:
```javascript
let let obj = {
'name':'chen','age':18
}//直接赋值
obj.gender = '男'//obj = {'name':'chen','age':18,'gender':'男'}
obj.gender = '帅哥'//obj = {'name':'chen','age':18,'gender':'帅哥'}由此得出可以直接添加属性,也可修改属性值
Object.assgin = (obj,'a1' = 1,'b2' = 2)//直接批量赋值属性
原型(原型即是对象,原型里面有共有属性)
每个对象都有原型,圆形里面存储着对象的共有属性。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/1314543/1588835016910-875f6c7a-003c-48c3-b885-e825b9448cb0.png#align=left&display=inline&height=226&margin=%5Bobject%20Object%5D&name=image.png&originHeight=677&originWidth=743&size=90076&status=done&style=none&width=248)<br />比如上图中obj的原型就是一个对象,obj的隐藏属性__proto__存着这个对象的地址,这个对象里有js原生早已封装好的属性,可以直接调用。
对象的原型也是对象
obj = {}的原型即为所有原型的对象,这个原型包含所有对象的共有属性,是对象的根,这个原型也有原型,是null。
对象将自身属性变成对象原型:
![image.png](https://cdn.nlark.com/yuque/0/2020/png/1314543/1588839620271-ecf8d53b-ac64-4b1f-a0f6-680cda95935c.png#align=left&display=inline&height=94&margin=%5Bobject%20Object%5D&name=image.png&originHeight=281&originWidth=610&size=20053&status=done&style=none&width=203.33333333333334)