this指向、执行上下文、变量对象、作用域链(面试)

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’
  • 出现时间和地方:变量对象是执行上下文创建的同时,在执行上下文内部产生的
  • 作用:变量对象产生后,会将当前上下文中所有的形参、变量函数都保存起来
作用域链
  • 概念:作用域链实际上是由一系列的变量对象组成的一个链条
  • 出现时间:在执行上下文创建阶段,就开始建立作用域链条
  • 作用:当在自己的变量对象找不到所需要的数据时,就可以沿着作用域链去其他变量对象中查找数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值