call,apply,bind的區別和用法

2021-09-19 19:15:00 字數 648 閱讀 5176

具體內容如下:

var p1=

}var p2=

p1.play.call(p2,'男',22);

//bind不相容ie6~8

'男',22)();

var fn=p1.play.bind(p2,'男',22);

fn();

在上述**中,三種方法都實現了改變this指向

bb的年齡為:22歲,性別為:男愛好是:敲**

bb的年齡為:22歲,性別為:男愛好是:敲**

bb的年齡為:22歲,性別為:男愛好是:敲**

var p=

function person()

console.log(this.age);//訪問不到了

// new之後建構函式中會生成

//this=

}var person2=person.bind(p);//改變this指向後不執行

new person2();

bind返回乙個新的函式,它的this指向p,它把函式交給了person2,在new的時候this指向例項化後的物件本身,此時的new person2相當於var p2=new person2(),這時bind就沒有用了。

js中call,apply,bind之間的區別

var xw var xh xw.say 複製 本身沒什麼好說的,顯示的肯定是小王 男 今年24。那麼如何用xw的say方法來顯示xh的資料呢。對於call可以這樣 xw.say.call xh 複製 複製 而對於bind來說需要這樣 xw.say.bind xh 複製 var xw var xh ...

call apply bind的使用方法和區別

call 1.改變this指向 2.執行函式 3.傳參 var obj function fun a,b fun 1,2 1,2,window fun.call obj,3,4 3,4,obj 1.改變this指向,執行函式,傳參 引數必須是陣列的形式 var obj function fun a,...

聊聊call apply bind的故事

實際上它們真正的樣子是這樣的 它們幾個的作用都是改變this的指向。bind 與另外兩個的區別則是前者改變this,不立即呼叫函式 而後者改變this,立即呼叫函式。以下例子在非嚴格模式下,注釋的是各個情況this的指向 let test test.foo test.foo.call null,1,...