01-修改this指向【牛客网-在线编程-前端篇】

本文介绍了JavaScript中的this关键字,以及bind、apply和call方法,它们都是用于改变函数中this对象的指向。共同点在于它们都能接收指定的上下文和参数,不同之处在于bind返回新的函数,而apply和call则立即执行。此外,文章还详细阐述了this在不同场景下的使用情况。
摘要由CSDN通过智能技术生成

参考答案

function bindThis(f, oTarget) {
  //方法一:apply
  // return function(){
  //     return f.apply(oTarget,arguments);
  // }

  //方法二:call
  // return function(x,y){
  //     return f.call(oTarget,x,y);
  // }

  //方法三:bind
  //return f.bind(oTarget);

  //方法四:答案考虑了浏览器兼容问题,如果bind方法失效,就返回一个apply过得方法;
  //       如上文所说,apply是立即执行,bind是返回方法,所以在apply外层包上一层函数。
  if (f.bind) {
    return f.bind(oTarget);
  }
  else {
    return function () {
      return f.apply(oTarget, arguments);
    }
  }

}

本题复习知识点:bind apply call

  • 共同点
  1. 三者都是function的内建方法(js中function函数也是一种对象)
  2. 三者都是用来改变函数的this对象的指向的;
  3. 三者第一个参数都是this要指向的对象,也就是想指定的上下文
  4. 三者都可以利用后续参数传参
  • 不同点:
  1. bind 可以直接返回这个更换this的函数,便于稍后调用,只是改变了执行的上下文,并未立即执行而是回调执行,因此在运行时需要在后面加入()才能表示和apply、call相同的结果;
  2. apply 、call 则是立即调用 。
  3. apply、call之间是传参数形式的区别,前者是参数数组,后者是参数项,

涉及的基础知识点

  • this是Javascript语言的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是调用函数的那个对象
  • 在JavaScript中,call、apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向。
  • this的使用情况:

1、作为普通函数调用,这是函数的最通常用法,属于全局性调用,因此this就代表全局对象。

2、作为对象方法的调用,函数还可以作为某个对象的方法调用,这时this就指这个上级对象。

3、作为构造函数调用,所谓构造函数,就是通过这个函数生成一个新对象(实例)。这时,this就指这个新对象(实例)。

涉及的参考链接

前端-js编程题1-封装函数f,使f的this指向指定的对象
——
JS中的this对象详解
——
this的指向及作用,function的封装
——
理解JS中的call、apply、bind方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值