lin-xin / blog

林鑫的个人博客,用于总结平时工作和学习中的经验。

Home Page:https://lin-xin.gitee.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

bind()实现中的 [].concat.call(args, [].slice.call(arguments)

n2meetu opened this issue · comments

为什么要把参数再拼接concat一次?[].concat.call(args, [].slice.call(arguments)最后一行代码的这个部分没有理解。

bind获取原函数,获取传入的参数,然后利用 原函数.call(新的上下问,参数),这个理解对吗

为什么要把参数再拼接concat一次?[].concat.call(args, [].slice.call(arguments)最后一行代码的这个部分没有理解。

bind获取原函数,获取传入的参数,然后利用 原函数.call(新的上下问,参数),这个理解对吗

args是第一个括号的参数,arguments是第二个括号的参数鸭,用concat就把他们装在了一起,成为了一个数组,然后执行~emmm

分三步走:
第一步:在 func = xxx.bind(this,参数1)时“预先”塞了第一波参数,这是第一个括号的参数,即args
第二步:后面调用func(参数2)执行时“正式”塞了第二波参数,这是第二个括号的参数,即arguments
第三步,在调用apply执行时,自然要把这两波参数汇总起来放进去