今天给大家介绍 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
现在了解了嘛,如有问题欢迎私信