> [我所见过的讲"javascript中apply、call、bind"最清晰最易懂的文章](https://blog.csdn.net/aitangyong/article/details/49278171)
> [理解 javascript 里的 bind() 函数](http://www.webhek.com/post/javascript-bind.html)
call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。
二者而言,作用完全一样,只是接受参数的方式不太一样.
apply 、 call 、bind 三者都是用来改变函数的this对象的指向的;
apply 、 call 、bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文;
apply 、 call 、bind 三者都可以利用后续参数传参;
bind是返回对应函数,便于稍后调用;apply 、call 则是立即调用。
```
var obj = {
x: 81,
};
var foo = {
getX: function() {
return this.x;
}
}
console.log(foo.getX.bind(obj)()); //81
console.log(foo.getX.call(obj)); //81
console.log(foo.getX.apply(obj)); //81
```
- Houser的个人Wiki
- Javascript
- 语言基础
- 变量
- 操作符整理
- new
- Ajax
- 事件
- 遍历
- 字符串转数字方法
- 原型链
- apply/call/bind
- 异步编程
- 模块化
- 继承的方式
- 对象的创建方式
- 内存泄漏
- js延迟加载
- 数据类型
- typeof
- 垃圾回收
- 作用域
- 闭包
- this
- es6
- 代码片段
- 对象拷贝
- Node.js
- 模块
- 库&框架
- Jquery
- 优点
- 组件库
- React
- React原理
- Key的作用
- JSX
- Redux
- Mobx
- 生命周期
- Typescript
- HTML&CSS
- viewport meta
- websocket
- webwork
- web GL
- html全局属性
- iframe
- 页面间通讯
- SVG
- 盒模型
- 输入url到显示的过程
- BFC(块格式化上下文)
- 动画
- CSS 秘密花园
- 前端
- webpack
- 后端
- nginx
- springboot
- 网络
- 跨域
- 网络攻击
- TCP
- Https
- Http状态码
- 缓存策略
- Http2
- 数据结构&算法
- 常用数据结构
- 开发&编码
- Git
- 分支策略
- 基本操作
- VSCode
- 工具
- App开发
- ReactNative
- 项目&业务
- Docker
- 协作工具
- 前端性能优化
- 登录授权
- 软件工程
- 渐进增强和优雅降级
- 计算机基础
- 设计模式
- 单例模式
- 工厂模式
- 发布订阅模式
- 适配器模式
- 代理模式
- 外观模式
- 命令模式
- 桥接模式
- 模板模式
- 职责链模式
- 正则