關(guān)于JS中的apply,call,bind的深化解析__第1頁
關(guān)于JS中的apply,call,bind的深化解析__第2頁
關(guān)于JS中的apply,call,bind的深化解析__第3頁
關(guān)于JS中的apply,call,bind的深化解析__第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、關(guān)于JS中的apply,call,bind的深化解析_ 在Javascript中,F(xiàn)unction是一種對象。Function對象中的this指向決定于函數(shù)被調(diào)用的方式。用法apply,call 與 bind 均可以轉(zhuǎn)變函數(shù)對象中this的指向,在說區(qū)分之前還是先總結(jié)一下三者的相像之處: 1、都是用來轉(zhuǎn)變函數(shù)的this對象的指向的。 2、第一個(gè)參數(shù)都是this要指向的對象。 3、都可以利用后續(xù)參數(shù)傳參。 call方法: 語法:call(thisObj,arg1, arg2, ,.argN) 定義:調(diào)用一個(gè)對象的一個(gè)方法,以另一個(gè)對象替換當(dāng)前對象。 說明:call 方法可以用來代替另一個(gè)對象調(diào)用

2、一個(gè)方法。call 方法可將一個(gè)函數(shù)的對象上下文從初始的上下文轉(zhuǎn)變?yōu)橛?thisObj 指定的新對象。 假如沒有供應(yīng) thisObj 參數(shù),那么 Global 對象被用作 thisObj。 apply: 語法:apply(thisObj,數(shù)組參數(shù)) 定義:應(yīng)用某一個(gè)對象的一個(gè)方法,用另一個(gè)對象替換當(dāng)前對象 說明:假如參數(shù)不是數(shù)組類型的,則會(huì)報(bào)一個(gè)TypeError錯(cuò)誤。 bind: 在EcmaScript5中擴(kuò)展了叫bind的方法(IE6,7,8不支持),bind與call很相像,,例如,可接受的參數(shù)都分為兩部分,且第一個(gè)參數(shù)都是作為執(zhí)行時(shí)函數(shù)上下文中的this的對象。不同點(diǎn)有兩個(gè): bind

3、的返回值是函數(shù);后面的參數(shù)的用法也有區(qū)分; 先看例子一: function add(a, b) alert(a + b); function sub(a, b) alert(a - b); 對于,call,可以這么用: add.call(sub,3,1);結(jié)果為4 對于,apply,可以這么用; add.apply(sub,3,1);結(jié)果為4 對于,bind,可以這么用: add.bind(sub)(3,1);結(jié)果為4 可以看到輸出結(jié)果都一樣,但是傳參用法不一樣; 再看例子二: function jone(name,age,work) =name; this.age=age;

4、 this.work=work; this.say=function(msg) alert(msg+,我叫++,我今年+this.age+歲,我是+this.work) var jack= name:jack, age:24, work:同學(xué) var pet=new jone(); pet.say.apply(jack,歡迎您) console.log() 對于call,需要這樣: pet.say.call(jack,歡迎您!) 對于apply,需要這樣: pet.say.apply(jack,歡迎您!) 對于bind,需要這樣: pet.say.bind(jack,歡迎您)() 此時(shí)輸出console.log(),發(fā)覺為jack,this上下文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論