this的指向
this的指向分为函数内和函数外两种情况
函数外的this:函数外的this,实际指的是全局的this,全局的this永远指向的都是全局对象window;
函数内的this:分为以下六种情况:
1.普通函数:通过 函数名() 调用,普通函数内部的this指向window;
2.回调函数:回调函数指的是将一个函数作为参数进行传递,回调函数内部的this指向window;
3.对象方法:指的是通过 对象名.方法名() 调用
4.事件方法:指的是绑定事件的处理函数,事件方法内部的this指向绑定事件的元素节点;
5.构造函数(class):构造函数指的是通过 new 函数名() 调用,构造函数(class)内部的this指向new出来的实例对象;
6.箭头函数:箭头函数中没有this,如果需要在箭头函数中访问this,实际访问的是箭头函数所在父级上下文中的this
改变this指向
1. call():改变this的指向的同时,会立即执行相应的函数,如果函数需要传参,从第二个参数开始依次传递;
3. apply():改变this的指向的同时,会立即执行相应的函数,如果函数需要传参,在第二个参数传递一个数组,数组中孙芳所需要的参数;
4. bind():改变this的指向的同时,会返回一个新的函数(需要重新调用),如果需要传递参数,在调用新函数时直接传递
myFun.call(this的新指向,参数1,参数2,参数3...)
myFun.apply(this的新指向,[参数1,参数2,参数3...])
myFun.bind(this的新指向)(参数1,参数2,参数3...) //与下面相同
myFun.bind(this的新指向,参数1,参数2,参数3...)()
执行上下文
执行上下文指的是代码的运行环境,通常上下文分为两类:全局上下文和函数上下文
- 全局上下文:在全局代码运行前,全局上下文会产生在栈内存中,当程序关闭时,从内存中销毁
- 函数上下文:当一个函数被调用时,会在栈内存中产生相对应的函数上下文,当函数调用完成时,从内存中销毁
变量对象
- 名称:变量对象,也称为‘VO’
- 出现时间和地方:变量对象是执行上下文创建的同时,在执行上下文内部产生的
- 作用:变量对象产生后,会将当前上下文中所有的形参、变量函数都保存起来
作用域链
- 概念:作用域链实际上是由一系列的变量对象组成的一个链条
- 出现时间:在执行上下文创建阶段,就开始建立作用域链条
- 作用:当在自己的变量对象找不到所需要的数据时,就可以沿着作用域链去其他变量对象中查找数据