通過**可以看出區別:
var name = 'window';
var age = '10'
function fun1(name)
var person=;
fun1.call(person, "小明");
//對於bind來說,用法更加的靈活
var fun2 = fun1.bind(person, "小明");
fun2();
fun1()
看一下在控制台的列印輸出:
bind常見用法案例:
function fun1(myfun)
var fun2 = function(fn)
fun1.prototype.fun3 = function()
new fun1(fun2)
控制台輸出的是: fun1
對比一下如果不使用bind方法:
function fun1(myfun)
var fun2 = function(fn)
fun1.prototype.fun3 = function()
new fun1(fun2)
控制台輸出的是: fun2
聊聊call apply bind的故事
實際上它們真正的樣子是這樣的 它們幾個的作用都是改變this的指向。bind 與另外兩個的區別則是前者改變this,不立即呼叫函式 而後者改變this,立即呼叫函式。以下例子在非嚴格模式下,注釋的是各個情況this的指向 let test test.foo test.foo.call null,1,...
寫給新人的call apply bind
語法 1 fun.call thisarg arg1 arg2 thisarg fun函式執行時指定的this值,可能的值為 例如 123 456functiona functionb a.call b functionb 經常會看到這種使用情況 123 45function list list 1...
理解 call, apply, bind 的用法
call 方法使用乙個指定的this值和單獨給出的乙個或多個引數來呼叫乙個函式。function list list 1,2,3,4,5 1 陣列的所有方法都是掛在array的prototype上的,如圖 而類陣列物件本身是沒有這些方法的,當然也無法呼叫 那麼想在一些物件上呼叫這個物件本身沒有的方法...