实现一个函数 myBind(fn, context, ...args),模拟 Function.prototype.bind

推荐答案

本题详细解读

1. 函数签名

myBind(fn, context, ...args) 是一个自定义的 bind 函数,它接受三个参数:

  • fn: 需要绑定的函数。
  • context: 绑定函数的 this 上下文。
  • ...args: 传递给绑定函数的初始参数列表。

2. 返回值

myBind 返回一个新的函数,这个新函数在被调用时会将 context 作为 this 上下文,并将 args 和调用时传入的参数合并后传递给原函数 fn

3. 实现细节

  • 闭包: myBind 返回的函数是一个闭包,它捕获了 fncontextargs 这些外部变量。
  • 参数合并: 在返回的函数中,...innerArgs 是调用时传入的参数,它们与 args 合并后传递给 fn
  • apply 方法: 使用 apply 方法将 context 作为 this 上下文,并将合并后的参数传递给 fn

4. 示例用法

-- -------------------- ---- -------
----- --- - -
  ------ --
--

-------- ------------- -- -
  ---------------------- - - - ---
-

----- ---------- - ------------------ ---- ----
--------------- -- --- -- --- - -- - ---

在这个示例中,boundPrint 是一个绑定了 obj 作为 this 上下文的函数,并且 10 作为初始参数传递给了 printValue。当调用 boundPrint(20) 时,20 作为第二个参数传递给 printValue,最终输出 72

纠错
反馈