【春节日更】瞅瞅,你是否了解 bind 方法 ?

2022-07-22 14:12:04 浏览数 (2)

今天给大家介绍 Function.prototype.bind() 方法

先来看道相关题目:

代码语言:javascript复制
 function f(y,z){
    return this.x y z;
  }
  var m = f.bind({x:1},2);
  console.log(m(3));

答案多少呢?

思考?

思考?

思考?

结果为:6

你对了嘛!!!哈哈哈

没对就好好看看下面的介绍吧

01

bind 方法

首先,bind 方法,是指 Function.prototype.bind()

MDN官方说明:

bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。

将上面的描述,总结为以下三点:

1、bind() 方法会创建一个新的函数

2、这个新函数的 this 被指定为 bind() 的第一个参数

3、其余参数将作为新函数的参数

了解了关于bind的说明,再来看看题目

02

题目解析

回顾:

代码语言:javascript复制
function f(y,z){
    return this.x y z;
  }
  var m = f.bind({x:1},2);
  console.log(m(3));

解析:

1、m 是 bind() 返回的新函数

2、调用m函数时,会执行函数 f ,但 f 中的this 指的就是bind的第一个参数,即{x:1} ;故this.x 值为1

3、bind函数,从第二个参数起,会依次传递给原始函数,这里的第二个参数2,即是 f 函数的 y 的值

4、剩余的参数做为新函数的参数,故 m(3) 的时候,这里的 3 就是参数z了

5、故:结果为 1 2 3=6

现在了解了嘛,如有问题欢迎私信

0 人点赞