function bind(fn, context) {
return function() {
return fn.apply(context, arguments);
}
}

不明白为什么能获得event对象?为什么所有的参数(这里指的function的参数吧?那function的参数是什么?是event对象的吗?)都通过被绑定的函数直接传给它?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
arguments 是内部的……这个翻译有点歧义,它的意思是语言内部定义的,或者说是预定义的,代表函数获得的所有参数,以一个类似数组的对象表示。
原话
这里的“内部”是修饰“函数”而不是 arguments,
另外,你需要了解 apply。
综上及示例,
bind函数把handler.handleClick和handler绑定起来了,也就是说,上面 bind 的定义中,fn对应的是 handler.handleClick,而context对应的是handler`。定义返回的匿名函数假定为
fx,那么在事件触发时,会调用fx(event),由于内部有fn.apply(context, arguments)调用,这里的arguments实际是一个类数组[event],相当于通过apply把event传递给了fn,即handler.handleclick。分开来看可能要好理解一点。
以上代码,fixedHandler 是 bind 返回的一个函数,把 fixedHandler 作为事件处理程序添加后,当事件发生时,浏览器会把 event 传递给 fixedHandler。fixedHandler 又在内部通过 apply 把自己的所有参数(arguments) 传递给 handler.handleClick 。
题主要理解好 arguments 和 apply。
arguments返回的是当前函数的参数
看书不认真:
注意这里使用的
arguments是内部函数的,而非bind()的。