## 1.访问属性的两种方式:
```
var obj=new Object();
obj.name="xiaoming";//简单但是有限制性
obj["name"]="xiaoming";//灵活,类比数组的访问
```
## 2.for循环的两种方式
```
for(var key in 对象){
console.log(key);//输出对象属性名,相当于数组的索引,即键
console.log(对象[key]);//输出元素属性值
}
```
## 3.对象的声明方式
```
①var student = new Object();
②var student ={} 再给student对象赋值
③var student={
name:"xiaoming",
age:18,
call:function(){
console.log("大家好我的名字叫"+this.name);
}
}
//注意两点:属性名与属性值之间用冒号分隔,用逗号分隔每条属性.
```
## 4.undefined总结,以下情况会出现undefined
①变量声明了没有赋值
②对象声明了没有赋值
③数组中形参个数大于传递的实参个数
④对象的属性没有赋值,使用该属性
⑤函数没有返回值,这里要注意
```
var fn=function(){
console.log("fn函数中的代码");
}
console.log(typeof fn());//输出结果为undefined,fn函数么有返回结果
//这里千万注意:函数的返回结果,与函数执行输出结果是不一样的!!
```
## 5.匿名函数 使用场景
①声明对象方法
②立即执行函数
```
function fn(){
console.log("这个函数声明了要立即执行!!");
}
(function fn(){
console.log("这个函数声明了要立即执行!!");
})();
6.函数声明的两种方式
fn();//fn()使用如下方式声明,var fn声明会提升,但是函数赋值不能提升.所以会报 fn()is not a function
var fn=function(){
console.log("这是一个函数");
}
```
## 7.回调函数
> 函数作为一个参数传递给另外一个函数,这个叫做回调函数
```
function diaosi(){
console.log('屌丝搬砖会赚钱');
return 100;
}
function nvshen (fn){
var money = 0;//没钱了
money = fn();
console.log("女神现在的钱数" + money);
}
nvshen(diaosi);
```