扫码关注官方订阅号
var f = String.fromCharCode; for (var i = 65; i < 70; i++) { f = f.bind(0, i); } f(); //输出为 "ABCDE", 为什么?
chrome 截图如下:
学习是最好的投资!
最终相当于执行了String.fromCharCode(65, 66, 67, 68, 69),所以结果是ABCDE。为什么呢?这要从bind函数说起。
String.fromCharCode(65, 66, 67, 68, 69)
ABCDE
bind
bind的第一个参数是函数执行时的this的值,fromCharCode是一个静态方法,this是什么都无所谓,所以可以随便传。
this
fromCharCode
除了第一个参数外,bind还可以接受任意多个参数,这些参数在执行时会传给被绑定的方法。所以第一次循环结束后,相当于在fromCharCode上绑定了一个参数65;第二次循环结束后,又绑定了一个参数66(现在一共绑定了65、66 2个参数),以此类推,最终的f相当于在原来的fromCharCode上绑定了5个参数,所以得到的结果为ABCDE。
65
66
65、66
f
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
最终相当于执行了
String.fromCharCode(65, 66, 67, 68, 69),所以结果是ABCDE。为什么呢?这要从bind函数说起。bind的第一个参数是函数执行时的this的值,fromCharCode是一个静态方法,this是什么都无所谓,所以可以随便传。除了第一个参数外,
bind还可以接受任意多个参数,这些参数在执行时会传给被绑定的方法。所以第一次循环结束后,相当于在fromCharCode上绑定了一个参数65;第二次循环结束后,又绑定了一个参数66(现在一共绑定了65、662个参数),以此类推,最终的f相当于在原来的fromCharCode上绑定了5个参数,所以得到的结果为ABCDE。