Function.prototype.bind
我是 ES5和柯里化参数(基本上是为函数创建默认参数)的忠实粉丝。
我只是在胡闹,但我终其一生都无法弄清楚我自己的构造。这是我的游乐场:
function hello( arg1, arg2 ) {
console.log('hello()');
console.log('"this" is: ', this);
console.log('arguments: ', arguments);
}
var foo = Function.prototype.call.bind( hello,{what: 'dafuq'}, 2 );
foo( 42 );
日志输出如下:
hello()
"this" is: Object{ what="dafuq" }
arguments: [2,42]
但我不明白这个对象究竟是如何成为 inside的{what: 'dafuq'}
参考。据我了解,我们正在创建对. 让我们快速检查 MDN 概要:this
foo
Function.prototype.call
.bind()
fun.bind(thisArg[, arg1[, arg2[, ...]]])
所以,thisArg
for.call
是hello
函数,后面是参数列表。基本上发生的事情是这样的
Function.prototype.call.call( hello, {what: 'dafuq'}, 2);
...uuhhh 现在我的大脑有点疼。我想我现在知道会发生什么,但请有人找到很好的可靠词来详细解释它。
- 怎么
{what: 'dafuq'}
变成this reference