返回介绍

模拟 Function.prototype.apply()

发布于 2024-09-07 20:34:43 字数 628 浏览 0 评论 0 收藏 0

apply() 方法调用一个具有给定 this 值的函数,以及以一个数组(或类数组对象)的形式提供的参数。

Function.prototype.myApply = function(context) {
  var context = context || window // 获取需要绑定的 this
  context.fn = this // 获取需要改变 this 的函数
  const arg = arguments[1] // 获取传递给函数的参数

  if(!(arg instanceof Array)) {
    throw Error('参数需要是一个数组')
  }
  const res = context.fn(...arg) // 执行函数
  delete context.fn // 删除该方法
  return res // 返回函数返回值
}
function say(a,b,c) {
  console.log(this.name,a,b,c)
}
say.myApply({name:'nanjiu'},[1,2,3]) //nanjiu 1 2 3
say.apply({name:'nanjiu'},[1,2,3]) //nanjiu 1 2 3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文