美文网首页React
手写bind方法

手写bind方法

作者: 转移到CSDN名字丹丹的小跟班 | 来源:发表于2021-03-01 15:27 被阅读0次

自己封装一个bind方法,需要考虑以下几点:

  • 参数的获取(方法里面的参数和bind返回的函数的参数)
  • this的保存
  • apply或者call的使用
Function.prototype.bind = function (...arg1) {
  //保存this,这里的this指的是test方法
  let self = this;
  //取出第一个参数,也就是this的指向对象
  let obj = arg1[0];
  if (typeof obj === "object") {
    obj = obj || window; //  obj 如果是null就会赋值为window
  } else {
    obj = Object.create(null);
  }
  //剩余参数保存起来
  let params1 = arg1.slice(1);
  //返回一个待执行的函数
  return function (...arg2) {
    //和第一个参数合并为完整的参数
    let params2 = params1.concat(arg2);
    //调用apply方法进行this转换
    return self.apply(obj, params2);
  };
};
var test = function (a, b, c) {
  console.log("x=" + this.x, "a=" + a, "b=" + b, "c=" + c);
};
var o = {
  x: 1,
};
test.bind(o, 1)(2, 3); //x=1 a=1 b=2 c=3

相关文章

  • 前端面试宝典之:手写bind方法

    手动实现一个 bind 方法 bind 方法简介 在正式手写之前,你得知道 bind 方法是一个什么东西,在 MD...

  • 手写bind

    手写bind bind语法 bind()方法创建一个新的函数,在bind()被调用时,这个新函数的this被指定为...

  • 手写bind方法

    自己封装一个bind方法,需要考虑以下几点: 参数的获取(方法里面的参数和bind返回的函数的参数) this的保...

  • 写一个bind方法

    对bind,apply,call的用发理解还不够深刻。 手写一个bind方法 再复杂一点

  • JS基础知识4--作用域和自由变量

    题目 一. this的不同应用场景,如何取值? 二. 手写bind函数(bind是改变函数this指向的方法之一)...

  • bind Polyfill 详解javascript bind

    前端面试经常会遇到的一个面试题:手写bind方法 这篇文章就ECMAScript中bind Polyfill来详解...

  • 手写call bind apply

    手写call bind apply

  • 3.手写call/apply/bind/slice

    1.手写call 2.手写apply 3.手写bind 4.手写slice

  • 手写bind,apply,call方法

    三者区别: call 和 apply 都是为了解决改变 this 的指向。作用都是相同的,只是传参的方式不同。 除...

  • 手写 bind/call/apply 方法

    回顾一下 this 是什么? this 是指包含它的函数作为方法被调用时所属的对象。简单拆成三句话就是: 包含它的...

网友评论

    本文标题:手写bind方法

    本文链接:https://www.haomeiwen.com/subject/lyrafltx.html