apply,call,bind個人總結

2021-09-28 18:21:49 字數 1783 閱讀 3737

首先他們是用來改變呼叫方法中this的指向的,而且他們都是function的prototype。分別為

function.prototype.call()

function.prototype.bind()

引數1 thisarg:物件也就是需要指向this的物件

引數2 argsarray:陣列 會按對應的索引來替換呼叫方法中的引數

引數1 thisarg:物件也就是需要指向this的物件

引數2 arg1...argn:對個物件 會按對應的位置來替換原有方法中的元素傳遞給方法

var name = "windowsname";

var a = ;

function v(name,cc,gg)

v(1,2,3).call(a,['傳遞成功','q','c'],'2','3')

引數1 thisarg:物件也就是需要指向this的物件

引數2 arg1...argn:對個物件 會按對應的位置來替換原有方法中的元素傳遞給方法

其實bind基本和call一樣但在呼叫方便有點區別,bind通過閉包實現的所以呼叫時.bind()() 或方法賦值後呼叫  var a= c();a.bind()

function.prototype.call = function (obj) ; //eval() 實現js**的方法

var result = eval('obj.fn(' + args + ')'); // 在eval的環境下 args陣列會變成乙個乙個引數字串(預設是會呼叫array.tostring())

delete obj.fn; // 刪除b裡面的a方法

return result;

};//bind

function.prototype.bind = function(obj);

return newfn;

};

apply call bind 使用總結

參考 語法 語法 fun.call thisarg arg1 arg2 var a var b a.fn 接受的是乙個陣列var a var b a.fn 接受的是引數 b.call a,1,2 3var a var b a.fn b.bind a,1,2 以上code我們會發現並沒有輸出.bind...

手動實現apply call bind

window.a 1 定義乙個全域性變數 var obj 定義乙個物件用來繫結 var funct function b,c 定義乙個函式用來執行 funct 1,2 1 1 2 直接執行,相當於window.funct 1,2 this繫結於window base base window 傳遞繫結...

apply call bind方法呼叫

恢復內容開始 首先這三個方法的作用都是用來改變this的值,而this的值一般有幾種情況。1 函式作為乙個物件的乙個方法來呼叫,此時this的值指向物件。var a a.f 1 2 函式的正常呼叫,此時的this指向全域性物件,一般來說是window物件。function f x f 1 3 正常函...