← 输入框|github.com|刷新
Skip to content

第 56 期(W3C 标准-ECMAScript-上下文环境):模拟apply方法 #59

Open

Description

@wingmeng

ECMAScript 中的 apply() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。
下面我们编写一个函数 myapply 来模拟 apply 方法,以此加深对 apply 的理解。

相关:第 52 期(W3C 标准-ECMAScript-上下文环境):模拟call方法

Function.prototype.myApply = function(context, arr) {
  context = context || window;
  context.fn = this;

  var result;

  if (!arr) {
    result = context.fn();
  } else {
    var args = [];

    for (var i = 0; i < arr.length; i++) {
      args.push('arr[' + i + ']');
    }

    result = eval('context.fn(' + args + ')');
  }

  delete context.fn;
  return result;
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions