首先他們是用來改變呼叫方法中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 正常函...