|
今天给大家介绍 Function.prototype.bind() 方法
先来看道相关题目: 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 题目解析 回顾: 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 现在了解了嘛,如有问题欢迎留言 如果喜欢这篇文章,欢迎添加右下角 "公众号",可以第一时间获到文章推送 |
|
|