javascript的call与apply 简单实现原理

利用javascript语言特性,预解析时this赋值点'.'的前面对象

Function.prototype.myCall = function (ctx, ...args) {
  ctx = ctx ? Object(ctx) : window;
  ctx.fn = this; //利用javascript语言特性,预解析时this赋值点'.'的前面对象
  ctx.fn(...args);
  delete ctx.fn;
};
Function.prototype.myApply = function (ctx, args) {
  ctx = ctx ? Object(ctx) : window;
  ctx.fn = this; //利用javascript语言特性,预解析时this赋值点'.'的前面对象
  ctx.fn(...args);
  delete ctx.fn;
};

function fn() {
  console.log("this", this);
}
fn.myCall({ aa: 11 });
posted @ 2021-12-08 17:02  jerry-mengjie  阅读(41)  评论(0)    收藏  举报