//實現乙個call方法:
function.prototype.mycall = function(context)
context.fn(...args);
let result = context.fn(...args);
delete context.fn;
return result;
}var value = 2;
var obj =
function bar(name, age)
}console.log(bar.call(null));
console.log(bar.mycall(obj, 'dong', 18));
複製**
/*
在瀏覽器執行,node環境下全域性變數是global而非window;
核心思路就是把函式作為要繫結物件的乙個方法,然後執行函式,最後從繫結物件上刪除此方法;
*/var context = object(context) || window;
//object(context) 此處考慮呼叫函式的非object
context.fn = this;
// 首先要獲取呼叫call的函式,用this可以獲取
let result;
if(!arr)else)
context.fn(...args);
}return result
delete context.fn
}var foo = ;
function bar(name, age)
複製**
實現apply call 方法
實現乙個call方法 function.prototype.mycall function context context.fn args let result context.fn args delete context.fn return result var value 2 var obj f...
實現apply call 方法
實現乙個call方法 function.prototype.mycall function context context.fn args let result context.fn args delete context.fn return result var value 2 var obj f...
模擬實現apply call
call func.call obj,args1,args2 傳入的是引數列表 obj,args1,args2 改變this 的指向,讓bar 函式的this指向foo物件 var foo function bar bar.foo 等同與將bar函式作為foo物件屬性進行呼叫,即為下列方式 var ...