實現apply call 方法

2021-09-11 13:45:31 字數 837 閱讀 4355

//實現乙個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 ...