Cosen95 / fe_interview

字节、阿里、美团、滴滴、腾讯等大厂高级前端面试题整理
238 stars 25 forks source link

手写call() #86

Open Cosen95 opened 4 years ago

Cosen95 commented 4 years ago
Function.prototype.call2 = function (context) {
  var context = context || window;
  context.fn = this;
  var args = [];
  for (var i = 1, len = arguments.length; i < len; i++) {
    args.push("arguments[" + i + "]");
  }

  var result = eval("context.fn(" + args + ")");

  delete context.fn;
  return result;
};

var value = 2;

var obj = {
  value: 1,
};

function bar(name, age) {
  console.log(this.value, window);
  return {
    value: this.value,
    name: name,
    age: age,
  };
}

bar.call(null); // 2

console.log(bar.call2(obj, "kevin", 18));