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 });

浙公网安备 33010602011771号