成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

關(guān)于javascript中的bind、call、apply等函數(shù)的用法

lordharrd / 738人閱讀

摘要:其實它們都很簡單,但是在處理一些與相關(guān)的函數(shù)的時候,用來改變函數(shù)中的指向,卻是必不可少的工具,所以必須掌握好它們的用法。

關(guān)于javascript中的bind、call、apply等函數(shù)的用法
我GitHub上的菜鳥倉庫地址: 點擊跳轉(zhuǎn)查看其他相關(guān)文章
文章在我的博客上的地址: 點擊跳轉(zhuǎn)

? ? ? ? 前面的文章已經(jīng)說到this的指向了,那么這篇文章就要說一說和this相關(guān)的三個函數(shù)的用法:bind( )、call( )和apply( )。

? ? ? ? 其實它們都很簡單,但是在處理一些與this相關(guān)的函數(shù)的時候,用來改變函數(shù)中this的指向,卻是必不可少的工具,所以必須掌握好它們的用法。

? ? ? ? 好了,三管齊下,一起比較地舉例子說一下:

//先來一個對象big吧
var big = {
    name:"BaBa",
    saying:function (age){
        console.log(this.name,"age:",age);
    }
};

//再來一個small對象
var small= {
    name:"ErZi"
};

//如果想調(diào)用big的saying方法來說出‘Erzi’:
//使用bind方法
big.saying.bind(small)(20);//打印結(jié)果為ErZi age: 20
//使用call方法
big.saying.call(small,20);//打印結(jié)果為ErZi age: 20
//使用apply方法
big.saying.apply(small,[20]);//打印結(jié)果為ErZi age: 20

? ? ? ? 所以,其實三種方法都可以達到同一個結(jié)果,至于區(qū)別就很顯而易見了。

? ? ? ? bind只是單純將一個函數(shù)里的this的指向明確指定為small了,如果要執(zhí)行函數(shù),就要在后面加括號調(diào)用了。

? ? ? ? call就是直接執(zhí)行一個自己指定this指向的函數(shù),參數(shù)是一個一個傳遞。

? ? ? ? apply和call的區(qū)別就是,參數(shù)是放進一個數(shù)組中傳遞。

? ? ? ? 實際上,很多時候我們在一個函數(shù)中,想用到其他的函數(shù),但是其他函數(shù)的this指向就不明確,所以就會在自己的函數(shù)里面通過這三個方法來調(diào)用函數(shù),例如:

//先來一個對象big吧
var big = {
    name:"BaBa",
    age:50,
    saying:function (){
        console.log(this.name,"age:",this.age);
    }
};

//再來一個SayingAge的構(gòu)造函數(shù)
function SayingAge(name,age){
    this.name = name;
    this.age = age;
    this.saying = big.saying.bind(this);
}

//實例化一個對象genius
var genius = new SayingAge("tiancai",18);
//調(diào)用genius的saying方法
genius.saying();//打印結(jié)果為tiancai age: 18

? ? ? ? 構(gòu)造函數(shù)SayingAge就是將big的saying方法拿過來,并將saying函數(shù)里面的this指向改為自己的this指向(指向?qū)嵗膶ο螅?/p>

? ? ? ? 如果想不單單是bind了一個函數(shù)的this指向,還想執(zhí)行它,舉個call的例子(apply只是將參數(shù)放進數(shù)組):

//先來一個對象big吧
var big = {
    name:"BaBa",
    age:50,
    saying:function (sex){
        console.log(this.name,"age:",this.age,"sex:",sex);
    }
};
//再來一個small對象
var small = {
    name:"ErZi",
    age:18
};
//借用big的saying方法看看small的saying是什么
big.saying.call(small,"male");//打印結(jié)果為ErZi age: 18 sex: male

? ? ? ? 當然了,這個方法并沒有給small添加了saying方法,只不過調(diào)用了big的saying方法,并將里面的this指向small而已。

? ? ? ? 相信大家對這三個方法的應(yīng)用都很輕松掌握了。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/91402.html

相關(guān)文章

  • javascript關(guān)于this 以及this顯示設(shè)置(apply、call、bind)

    摘要:如果連續(xù)呢結(jié)果會是什么結(jié)果還是第一個原因是,在中,多次是無效的。更深層次的原因,的實現(xiàn),相當于使用函數(shù)在內(nèi)部包了一個,第二次相當于再包住第一次故第二次以后的是無法生效的。 this 1.其實js中的this沒那么難理解,當找不到this時記住一句話:誰調(diào)我,我就指誰!new 誰指誰 function text1(){ console.log(this); //指wind...

    LiveVideoStack 評論0 收藏0
  • javascript 基礎(chǔ)之 call, apply, bind

    摘要:系統(tǒng),扎實的語言基礎(chǔ)是一個優(yōu)秀的前端工程師必須具備的。第一個參數(shù)為調(diào)用函數(shù)時的指向,隨后的參數(shù)則作為函數(shù)的參數(shù)并調(diào)用,也就是。和的區(qū)別只有一個,就是它只有兩個參數(shù),而且第二個參數(shù)為調(diào)用函數(shù)時的參數(shù)構(gòu)成的數(shù)組。 系統(tǒng),扎實的 javascript 語言基礎(chǔ)是一個優(yōu)秀的前端工程師必須具備的。在看了一些關(guān)于 call,apply,bind 的文章后,我還是打算寫下這篇總結(jié),原因其實有好幾個。...

    xeblog 評論0 收藏0
  • call、applybind用法小結(jié)

    摘要:新手經(jīng)常犯的一個錯誤是將一個方法從對象中拿出來,然后再調(diào)用,希望方法中的是原來的對象。如果不做特殊處理的話,一般會丟失原來的對象。 call、apply、bind是JavaScript中Function函數(shù)自帶的方法,主要用于改變this的指向 區(qū)別: call() 1.語法: fun.call(this, arg1,arg2) 2.this取值的幾點說明: (1)處于非嚴格模式下,...

    woshicixide 評論0 收藏0
  • JavaScript函數(shù)callapplybind

    摘要:它們有明確的和成員函數(shù)的定義,只有的實例才能調(diào)用這個的成員函數(shù)。用和調(diào)用函數(shù)里用和來指定函數(shù)調(diào)用的,即指針的指向。同樣,對于一個后的函數(shù)使用或者,也無法改變它的執(zhí)行,原理和上面是一樣的。 函數(shù)里的this指針 要理解call,apply和bind,那得先知道JavaScript里的this指針。JavaScript里任何函數(shù)的執(zhí)行都有一個上下文(context),也就是JavaScri...

    alighters 評論0 收藏0
  • JScall、applybind方法詳解

    摘要:不能應(yīng)用下的等方法。首先我們可以通過給目標函數(shù)指定作用域來簡單實現(xiàn)方法保存,即調(diào)用方法的目標函數(shù)考慮到函數(shù)柯里化的情況,我們可以構(gòu)建一個更加健壯的這次的方法可以綁定對象,也支持在綁定的時候傳參。原因是,在中,多次是無效的。 bind 是返回對應(yīng)函數(shù),便于稍后調(diào)用;apply 、call 則是立即調(diào)用 。 apply、call 在 javascript 中,call 和 apply 都是...

    zombieda 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<