## 简单了解对象
- 什么是对象
- 首先排除男女朋友, 我们这是正经编程
- 对象是一个 复杂数据类型, 也叫做 引用数据类型
- 虽然我们说是复杂类型, 但是也没有很复杂, 只不过是存储了一些基本数据类型的集合
```
var obj = {
num: 100,
str: 'hello',
boo: true
}
```
- 这里的 {} 和函数中的 {} 不一样, 函数内部书写代码, 对象里面是书写数据的
- 对象就是一个键值对的集合
- 什么是键值对?
- 对象 obj 中, num 是键, 100 是值
- 对象 obj 中, str 是键, 'hello' 是值
- 对象 obj 中, boo 是键, true 是值
- 其实就是我们准备一个房子, 把我们想要的数据放进去, 然后把房子的地址给到变量名, 当我们需要某一个数据的时候, 就可以根据变量名里面存储的地址找到对应的房子, 然后去房子里面找到对应的数据
### 创建对象
- 字面量方式创建对象
- 语法:`var obj = {} var obj1 = {键值对, 键值对}`
- 内置构造函数创建
- 语法:`var obj = new Object()`
- 对象内对于 键(key) 的要求
- 推荐使用符合变量命名规则和规范的名字
- 可以使用纯数字当作 键名
- 这种情况下该属性会排列在最前面
- 可以使用任何特殊符号
- 使用特殊符号的时候,在书写时需要被引号包裹
### 对象数据类型的操作(增删改查)两种语法
- 点语法
```
var obj = {}
obj.name = 'qianfeng' // 增
obj.name = 'qianfeng123' // 改
console.log(obj.name) // 查
delete obj.name // 删
```
- 中括号语法(数组语法)
```
var obj = {}
obj['name'] = 'qianfeng' // 增
obj['name'] = 'qianfeng123123' // 改
console.log(obj['name']) // 查
delete obj['name'] // 删
```
- 两者的差异
- 符合变量命名规范与规则的情况,两者并无差异
- 操作不符合变量命名规范与规则的名称时,比如纯数字或者带有特殊符号的,就只能用中括号语法
- 涉及变量相关的时候,只能使用中括号语法
### for in 循环遍历对象
```
for (var k in obj) {
console.log('我执行了', k, obj[k])
}
```