如何延长作用域链_【前端每日一题】什么是this,this的常用方式有哪些?如何改变this的指向?...

2f2d81ab4518ded6f39e87a660355e5a.png

内容来源:知了堂前端项目经理——蛋糕。

63938ab7dc45e22c0605b47a71471b67.png

小伙计们,我是蛋糕哥...今天是「2020年8月20日」,今天是分享的「第34天」。非常考基础的一个题!面试题的解答限时一般是5-10分钟,所以在10分钟之内没弄出来正确答案的小伙就要认真阅读了。一来帮助成长中的小伙伴们成长(大神请忽略),二来算是磨练自己的意志,跟大家一起学习,一起成长...(不要问我为啥打这么多...成熟)。

【前端每日一题】什么是this,this的常用方式有哪些?如何改变this的指向?

a276fb621a8fe3710b38b6bd74eb068b.png

答:JS在运行过程中会产生执行上下文环境(context),context记录了包含函数在哪里被调用,作用域scope,this等信息。this就是context的其中一个属性,会在函数的执行过程中使用。This是在运行时候绑定的,它指代的上下文对象取决于函数调用的各种条件。

this提供了一种优雅的方式来隐式的传递一个对象的引用,所以在函数中使用this可以更加方便的复用函数。

1、全局使用 this === window 很少使用

2、函数当中 在全局调用这个fn() this === window

3、在方法当中使用 this === 调用当前这个函数的所在的对象啊

4、构造函数this执向的是 new 创建出来的实例对象啊

5、DOM事件处理函数中的this,指向当前的DOM节点

6、通过 bind,call,apply 操作符来显示的设置 this的指向

bind:绑定函数里面的this,返回新函数,

call,apply:绑定并执行这个函数,前者传参是“,”隔开,后者是数组

7、ES6的箭头函数 箭头函数没有自己的this,父作用域的this

18a6f10f305c4dcb55a1138a2849537f.png
var x = 3;
  var foo = {
     x: 2,
     baz: {
      x: 1,
      bar: function() {
         return this.x;
        }
      }
   }

  var go = foo.baz.bar;
  go()?
foo.baz.bar()?
//综合面试题
function Foo() {
    Foo.a = function() {
        console.log(1)
    }
    this.a = function() {
        console.log(2)
    }
}
Foo.prototype.a = function() {
    console.log(3)
}
Foo.a = function() {
    console.log(4)
}
Foo.a();
let obj = new Foo();
obj.a();
Foo.a();

你学会了吗?更多前端学习干货,欢迎关注知了编程学习圈。

知了编程学习圈​zhuanlan.zhihu.com
bef2138a1f9ccad5dd78876637ab07de.png

知了堂IT培训:【前端每日一题】什么是闭包,闭包的好处和坏处分别是?

知了堂IT培训:【前端每日一题】什么是作用域以及作用域链?

知了堂IT培训:【前端每日一题】如何实现继承(ES5/ES6)?

知了堂IT培训:【前端每日一题】什么是原型、原型链,有什么作用?

知了堂IT培训:【前端每日一题】在JS中什么是面向对象程序设计,面向对象设计优点?

知了堂IT培训:【前端每日一题】 说一下浏览器垃圾回收机制

知了堂IT培训:【前端每日一题】什么是浏览器缓存(知道什么是 强缓存 和 协商缓存)?

知了堂IT培训:【前端每日一题】请列举出几个常见的浏览器兼容性问题?

知了堂IT培训:【前端每日一题】HTML5常用的API有哪些?你用过哪些?

知了堂IT培训:【前端每日一题】之什么是reflow与repain?哪些操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值