久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

JavaScript中call,apply,bind方法的總結(jié)

call和apply都是改變上下文中的this并立即執(zhí)行這個函數(shù),bind方法可以讓對應(yīng)的函數(shù)想什么時候調(diào)就什么時候調(diào)用,并且可以將參數(shù)在執(zhí)行的時候添加,這是它們的區(qū)別,根據(jù)自己的實(shí)際情

  why?call,apply,bind干什么的?為什么要學(xué)這個?

  一般用來指定this的環(huán)境,在沒有學(xué)之前,通常會有這些問題。

var a = {
    user:"追夢子",
    fn:function(){
        console.log(this.user);
    }
}
var b = a.fn;
b(); //undefined

  我們是想打印對象a里面的user卻打印出來undefined是怎么回事呢?如果我們直接執(zhí)行a.fn()是可以的。

var a = {
    user:"追夢子",
    fn:function(){
        console.log(this.user);
    }
}
a.fn(); //追夢子

  這里能夠打印是因?yàn)?,這里的this指向的是函數(shù)a,那為什么上面的不指向a?我們?nèi)绻枰私鈚his的指向問題,請看徹底理解js中this的指向,不必硬背這篇文章。

  雖然這種方法可以達(dá)到我們的目的,但是有時候我們不得不將這個對象保存到另外的一個變量中,那么就可以通過以下方法。

  1、call()

var a = {
    user:"追夢子",
    fn:function(){
        console.log(this.user); //追夢子
    }
}
var b = a.fn;
b.call(a);

  通過在call方法,給第一個參數(shù)添加要把b添加到哪個環(huán)境中,簡單來說,this就會指向那個對象。

  call方法除了第一個參數(shù)以外還可以添加多個參數(shù),如下:

var a = {
    user:"追夢子",
    fn:function(e,ee){
        console.log(this.user); //追夢子
        console.log(e+ee); //3
    }
}
var b = a.fn;
b.call(a,1,2);

  2、apply()

  apply方法和call方法有些相似,它也可以改變this的指向

var a = {
    user:"追夢子",
    fn:function(){
        console.log(this.user); //追夢子
    }
}
var b = a.fn;
b.apply(a);

  同樣apply也可以有多個參數(shù),但是不同的是,第二個參數(shù)必須是一個數(shù)組,如下:

var a = {
    user:"追夢子",
    fn:function(e,ee){
        console.log(this.user); //追夢子
        console.log(e+ee); //11
    }
}
var b = a.fn;
b.apply(a,[10,1]);

  或者

var a = {
    user:"追夢子",
    fn:function(e,ee){
        console.log(this.user); //追夢子
        console.log(e+ee); //520
    }
}
var b = a.fn;
var arr = [500,20];
b.apply(a,arr);

  //注意如果call和apply的第一個參數(shù)寫的是null,那么this指向的是window對象

var a = {
    user:"追夢子",
    fn:function(){
        console.log(this); //Window {external: Object, chrome: Object, document: document, a: Object, speechSynthesis: SpeechSynthesis…}
    }
}
var b = a.fn;
b.apply(null);

  3、bind()

  bind方法和call、apply方法有些不同,但是不管怎么說它們都可以用來改變this的指向。

  先來說說它們的不同吧。

var a = {
    user:"追夢子",
    fn:function(){
        console.log(this.user);
    }
}
var b = a.fn;
b.bind(a);

  我們發(fā)現(xiàn)代碼沒有被打印,對,這就是bind和call、apply方法的不同,實(shí)際上bind方法返回的是一個修改過后的函數(shù)。

var a = {
    user:"追夢子",
    fn:function(){
        console.log(this.user);
    }
}
var b = a.fn;
var c = b.bind(a);
console.log(c); //function() { [native code] }

  那么我們現(xiàn)在執(zhí)行一下函數(shù)c看看,能不能打印出對象a里面的user

var a = {
    user:"追夢子",
    fn:function(){
        console.log(this.user); //追夢子
    }
}
var b = a.fn;
var c = b.bind(a);
c();

  ok,同樣bind也可以有多個參數(shù),并且參數(shù)可以執(zhí)行的時候再次添加,但是要注意的是,參數(shù)是按照形參的順序進(jìn)行的。

var a = {
    user:"追夢子",
    fn:function(e,d,f){
        console.log(this.user); //追夢子
        console.log(e,d,f); //10 1 2
    }
}
var b = a.fn;
var c = b.bind(a,10);
c(1,2);

  總結(jié):call和apply都是改變上下文中的this并立即執(zhí)行這個函數(shù),bind方法可以讓對應(yīng)的函數(shù)想什么時候調(diào)就什么時候調(diào)用,并且可以將參數(shù)在執(zhí)行的時候添加,這是它們的區(qū)別,根據(jù)自己的實(shí)際情況來選擇使用。


來源:http://www.admin10000.com/document/7025.html

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

由于實(shí)際運(yùn)行環(huán)境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達(dá)到,所以這部分不是開發(fā)者能夠決定的,開發(fā)者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標(biāo)簽、以及HTML5提供的對JavascriptAPI的擴(kuò)展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應(yīng)用的豐富,HTML5 工程師們已經(jīng)不滿足于把桌面端體驗(yàn)簡單移植到移動端,他們覬覦移動原生應(yīng)用人性化的操作體驗(yàn),特別是原生應(yīng)用與生俱來的豐富的手勢系統(tǒng)。HTML5 沒有提
你想要在自己網(wǎng)站上分享一個產(chǎn)品,或者是一個作品集,又或者僅僅只是一個靈感。在你發(fā)布到網(wǎng)上之前,你想讓它看起來有吸引力,專業(yè),或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設(shè)計(jì)流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認(rèn)!這是對我的極大鼓勵!我的
本文主要內(nèi)容有:框架與組件、構(gòu)建生態(tài)、開發(fā)技巧與調(diào)試、html、css與重構(gòu)、native/hybrid/桌面開發(fā)、前端/H5優(yōu)化、全棧/全端開發(fā)、研究實(shí)驗(yàn)、數(shù)據(jù)分析與監(jiān)控、其它軟技能、前端技術(shù)網(wǎng)
主站蜘蛛池模板: 成人高清视频在线观看 | 久久美女视频 | 亚洲免费在线观看视频 | 麻豆av一区二区三区久久 | 国产成人a亚洲精品 | 国内精品免费久久久久软件老师 | 97精品一区二区 | 久久国产精品久久 | www.日韩av.com| 亚洲一区二区在线免费观看 | av在线播放网 | 五月婷婷色 | 欧美一级在线 | 久久伦理电影 | 精品欧美一区免费观看α√ | 久久久久久久综合 | 国产一二三区精品视频 | 国产成人精品一区二区三区在线 | 中文天堂在线一区 | 国产成人精品久久二区二区91 | 国产精品观看 | 91精品国产综合久久久亚洲 | 91一区二区三区 | 久久九| 久草在线高清 | 亚洲一级黄色 | 99视频在线免费观看 | 亚洲三级视频 | 精品国产高清一区二区三区 | 中文字幕第二十页 | 久久亚洲91| av手机在线播放 | 成人亚洲视频 | 精精国产xxxx视频在线播放 | 麻豆亚洲| 999久久久免费精品国产 | 一区在线视频 | 欧美激情亚洲 | 亚洲一区二区在线播放 | 午夜成人在线视频 | 国产成人精品午夜 |