1、call()方法可以呼叫乙個函式
functionfn(
) fn.
call()
//window
2、call()方法可以改變函式的this指向
var o =
function
fn(x, y)
}//利用call方法後this指向了o這個物件
fn.call
(o,1,2
)
call方法總結:
var o =
function
fn(x, y, z)
//fn(1, 2, 3) //6
fn.(o,[1,
2,3]
)//利用call方法後this指向了o這個物件
bind() 方法不會呼叫函式,但是能改變函式內部this 指向,返回的是原函式改變this之後產生的新函式;如果只想改變this的指向但是不想呼叫這個函式,此時就可以使用bind這個方法
var o =
function
fn(x, y)
}var f = fn.
bind
(o,1,2
)//此處的f是bind返回的新函式 但是bind本身並不會呼叫這個函式,只是改變了它的this指向f(
)//呼叫新函式 this指向的是物件o 引數使用逗號隔開
bind方法總結:
1、共同點 : 都可以改變this指向
2、不同點:
bind 不會呼叫函式, 可以改變函式內部this指向
3、應用場景
call, apply, bind方法詳解
function a x,y var c a.call c,5,6 5 6 arguments 5,6 再看例子 function person age,male var person1 person.call person1,20,female person1 var person var per...
call apply bind方法詳解
var name window var newthis function showname info1,info2 showname a b 輸出 window a b 通過bind改變this指向 var newshowname showname.bind newthis,hello world ...
call apply bind 方法用法測試
call 1 use strict function test xx,yy let a 呼叫test方法,將 a 放到方法裡當作 this。所以裡列印a才會有值的。test.call a,10,20 console.log a 3 use strict function test xx,yy let...