[toc]
## 关于arguments
- 箭头函数中不支持arguments,但可使用ES6中的`...args`剩余运算符替代(并且`...args`本身就是一个真正的数组无需转换)
```
let fn = (...args)=>eval(arg.join('+'));
```
## 关于this
- 箭头函数自己木有this,用到的this都是它的上级作用域的this,以后实战项目中,并不是要把所有的函数都改为箭头函数,根据自身需要修改即可(例如:我们需要让函数中this是宿主环境中的this,我们才使用箭头函数,或则不涉及this问题,我们想让代码写起来简便一些也可以使用箭头函数)
```
let obj = {
name:'obj'
,fn(){
//this->obj
setTimeout(()=>{
//this->obj
},1000);
}
};
obj.fn();
```
![](https://box.kancloud.cn/9bad2bef447b83a19f551ed3a5e02480_823x385.png)
即使利用`call`,this也是宿主环境中的this(也就是说call等无效)
![](https://box.kancloud.cn/b0e006b8fae0c86fdad3786fa8a82332_853x367.png)
## 关于宿主环境
宿主环境不是执行的环境,而是定义的环境,下面的例子中,fn虽然是在sum中执行的,但是它是在window下定义的,所以它的宿主环境是window
```
let fn=()=>{
console.log(this);
}
let obj = {
name:'obj'
,sum:function(){
//->this.obj
fn();
}
};
obj.sum(); //window
```
## 高阶函数
```
let fn = function(i){
return function(n){
return n+(++i);
}
}
let fn = i=>n=>(n+(++i));
```
- 空白目录
- window
- location
- history
- DOM
- 什么是DOM
- JS盒子模型
- 13个核心属性
- DOM优化
- 回流与重绘
- 未整理
- 文档碎片
- DOM映射机制
- DOM库封装
- 事件
- 功能组件
- table
- 图片延迟加载
- 跑马灯
- 回到顶部
- 选项卡
- 鼠标跟随
- 放大镜
- 搜索
- 多级菜单
- 拖拽
- 瀑布流
- 数据类型的核心操作原理
- 变量提升
- 闭包(scope)
- this
- 练习题
- 各种数据类型下的常用方法
- JSON
- 数组
- object
- oop
- 单例模式
- 高级单例模式
- JS中常用的内置类
- 基于面向对象创建数据值
- 原型和原型链
- 可枚举和不可枚举
- Object.create
- 继承的六种方式
- ES6下一代js标准
- babel
- 箭头函数
- 对象
- es6勉强笔记
- 流程控制
- switch
- Ajax
- eval和()括号表达式
- 异常信息捕获
- 逻辑与和或以及前后自增
- JS中的异步编程思想
- 上云
- 优化技巧
- 跨域与JSONP
- 其它跨域相关问题
- console
- HTML、XHTML、XML
- jQuery
- zepto
- 方法重写和方法重载
- 移动端
- 响应式布局开发基础
- 项目一:创意简历