1. 程式人生 > 其它 >call()、apply()、bind() 的用法

call()、apply()、bind() 的用法

1,call()、apply()、bind() 都是重新定義this

2,call 、bind 、 apply 這三個函式的第一個引數都是 this 的指向物件,第二個引數(傳引數方式不同)

3,bind是返回對應函式,便於稍後呼叫;apply,call方法則是立即呼叫

 

用法:call

1 所有函式都可以呼叫原型(__proto__)
2 有N個引數,至少一個
3 第一個引數就是我們要改變得this,從第二個引數開始就是函式本身的引數
4 call函式有返回值。返回值是函式的函式值

function getInfo(age){ return { name:this.name, age:age } } var tina = { name:'博學' } console.log(getInfo.call(tina,18));

用法:apply


1 所有函式都可以呼叫原型(__proto__)
2 有N個引數,至少一個
3 第一個引數就是我們要改變得this,從第二個引數開始就是函式本身的引數
4 call函式有返回值。返回值是函式的函式值

1
function getInfo(age){ 2 return { 3 name:this.name, 4 age:age 5 } 6 } 7 var tina = { 8 name:'博學'11 12 console.log(getInfo.apply(tina,[18]));

用法:bind 

1 有N個引數
2 返回一個函式,只有呼叫該函式才能拿到getInfo的值
3 返回一個函式可以作為建構函式使用,但是這個時候this就失效了

function getInfo(age,vip){ return { name:this.name, age:age, vip:vip } } var tina = { name:'博學' } let tinaFun = getInfo.bind(tina,18); console.log(tinaFun('vip'));