call apply bind函式的理解以及手寫。

2022-06-21 23:51:17 字數 720 閱讀 6205

1、相同點,這三個是乙個函式。函式。函式。都可以改變函式的this指向 第乙個引數都是this要指向的物件。例如

var obj =

function

funcall(a,b,c)

funcall.call(obj,'a','b','c')

call函式

特點: 

1、可以改變當前函式的this指向(就是改變函式的呼叫者)。2、還會讓當前函式執行

// 1、將方法掛載到我們傳入的要繫結this的物件上,2,將掛載後的方法呼叫,3,將新增的方法屬性刪除

function.prototype.mycall = function

(thisarg, ...args)

if(array.isarray(args))

const fn = symbol('fn');

const obj = obj ||window;

obj[fn] = this

; const result =obj[fn](...args);

delete

obj[fn];

return

result;

}3、手寫bind

function.prototype.mybind = function

(obj, ...args1)

}

手寫call,apply,bind函式

涉及面試題 考慮兩點 function.prototype.mycall function context context context window 和上面的 一樣 context.fn this const args arguments slice 1 const result context...

實現call, apply, bind函式

思路 把目標儲存在this中並返回 const obj let name 李四 function add 執行函式 add 李四 add.call obj 張三1.實現call函式定義名稱為mycall function.prototype.mycall function content conte...

手寫call apply bind函式

function.prototype.mcall function context,args context context window global const funcname symbol context funcname this 傳入的引數不是陣列 if array.isarray ar...