[TOC]
## call、apply、bind的区别
~~~
call、apply、bind用来改变this指向。
bind调用后不会直接执行,而是返回一个改变了上下文的函数副本
call和apply是直接执行
call传的是数字
apply传是数字
~~~
### 1.函数作为普通函数调用,this指向window
~~~
function show(){
console.log(this);
}
show(); //window
<script>
var name = "li";
var xu = {
name:"xu",
}
function show() {
console.log(this.name);
}
show(xu);//li
</script>
~~~
从show(xu)的结果看出,this无法指向对象xu,无法获取它的name值
### 2.call、apply:
~~~
show.call(xu);//xu
show.apply(xu);//xu
~~~
区别:call传参传数字,apply传数组
~~~
function show(a,b) {
console.log(this.name);
console.log("sum",a+b);
}
show.call(xu,1,2);//xu,3
show.apply(xu,[1,2]);//xu,3
~~~
### 3.bind:
~~~
<script>
var name = "li";
var xu = {
name: "xu",
}
var show = function (a, b) {
console.log(this.name);
console.log("sum", a + b);
}.bind(xu);
show();
</script>
~~~
- 面试题
- 自我介绍
- 问答
- HTML
- 1.@import与link的区别
- CSS
- 1.display: none; 与visibiliy: hidden; 的区别
- 三角形
- margin-top
- 移动端适配问题
- JavaScript
- JavaScript原型和原型链
- 什么是promise
- call、apply、bind区别
- 用函数将字符串转化为驼峰命名
- 数组操作
- 1.筛选
- 2.排序
- 3.反转
- 4.去重
- 字符串方法
- 5.二叉树
- 6.克隆数组
- 重载
- (待完善)JavaScript事件
- dom事件流
- 四则运算符
- cookie,LocalStorage,sessionStorage
- 浅拷贝和深拷贝
- 对象
- 浏览器
- web性能优化
- 定时器
- 回调地狱
- 遍历的几种方式
- this指向
- HTTP
- 输入ur发生了什么
- ajax
- 跨域
- jquery跨域
- axios
- vue
- (待完善)缓存
- bootstarp
- es6
- 01解构赋值
- (未完成)class
