### 在函数中谁调用就指向谁 (在严格模式下"use strict",this为undefined)
```
function a() {
var user = "逐梦之子"
console.log(this.user); //undefined
console.log(this); //window
}
a() //相当于window.a()
this指向调用他的对象,这里函数 a 实际是被winder对象
```
### 在事件指向调用它的对象
构造函数中, 指向创建出来的实例
```
function Fn () {
this.user = "hhhh";
}
var a = new Fn;
console.log(a.user); //hhhh
// a 继承fn模拟中的方法和属性,调用方法 Fn 的对象是 a,this就指向a
```
### return
```
// function Fn () {
// this.user = "hhhh";
// return {};
// }
// var a = new Fn;
// console.log(a.user); //undefined
// function Fn () {
// this.user = "hhhh";
// return
// }
// var a = new Fn;
// console.log(a.user); //hhhh
// 如果返回值是一个对象,那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例。
```
### call apply
```
var yc = {
user : 'call',
fn: function(a,b){
console.log(this)
console.log(this.user);
console.log(a+b);
}
}
var yy = yc.fn; //如果不用call this指向window
// yy(1,2);
yy.call(yc,[1,2]); //this指向yc
```
apply和call相似但是第二个参数要是数组
```
var yc = {
user : 'call',
fn: function(a,b){
console.log(this)
console.log(this.user);
console.log(a+b);
}
}
var yy = yc.fn;
// yy(1,2);
yy.apply(yc,[1,2]); //如果不用apply this指向window
```
### bind
call和apply都是改变上下文中的this并立即执行这个函数,bind方法可以让对应的函数想什么时候调就什么时候调用,并且可以将参数在执行的时候添加,
```
var a = {
user: '逐梦之子',
fn: function (){
console.log(this.user);
}
}
var b = a.fn;
// b.bind(a); //不会输出
var c = b.bind(a);
c(); //这样才会输出
```
- 面试题
- 自我介绍
- 问答
- 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
