亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

what's the deference between apply bind call?

yintaolaowanzi / 1753人閱讀

摘要:彈出的就是,歲。值得注意的是,和都是改變上下文中的并立即執(zhí)行這個函數(shù),方法改變了指向之后會返回一個函數(shù),可以隨時調(diào)用。和作用完全一樣,只是傳參的方式不一樣。以上,有錯希望各位大神斧正。

apply bind call
這三個方法,作用都是改變當(dāng)前使用該方法的對象的this指向。
但三個方法還是有一些區(qū)別,先說說共同點。

window.person = {
    name: "mice",
    age: "22"
}
var another = {
    name: "henry",
    age: "23"
}
function say() {
    alert(this.name +"",+ this.age + "歲");
}

這個時候的this指向window,所以執(zhí)行彈出的就是mice,22歲。與say.call(window)效果一樣。

say.call(another);
或者
say.apply(another);
或者
say.bind(another)();

執(zhí)行之后this的指向就變成了another。彈出的就是henry,23歲。
值得注意的是,call和apply都是改變上下文中的this并立即執(zhí)行這個函數(shù),bind方法改變了指向之后會返回一個函數(shù),可以隨時調(diào)用。call和apply作用完全一樣,只是傳參的方式不一樣。

傳參方式:
call(thisObj,arg1,arg2...)
apply(thisObj,[obj1,obj2...])
bind(thisObj,arg1,arg2...)

知道了三者的區(qū)別,那么簡單說下這三個方法的實際作用。
比如

function fruits(){};
fruits.prototype = {
    color: "red",
    say: function(){
        console.log("My color is " + this.color);
    }
}
var apple = new fruits();
apple.say();

此時會打印出My color is red
但是現(xiàn)在我們有另一個對象banana

banana = {
    color: "yellow"
}

我們需要調(diào)用apple里的say方法,但是我們不想重新定義,
所以我們可改變apple的指向

apple.say.call(banana);

此時會打印出My color is yellow

再比如

var a = {
    user: "wgf",
    fn: function(){
        console.log(this.user);
    }
}
var b = a.fn;
b();

此時打印出來的是undefined
因為此時this指向的是b,b沒有user的屬性
所以此時改為

b.call(a);

就能打印出來了。

以上,有錯希望各位大神斧正。

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

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

相關(guān)文章

  • 《You Don't Know JS》閱讀理解——this

    摘要:運行規(guī)則根據(jù)的運作原理,我們可以看到,的值和調(diào)用棧通過哪些函數(shù)的調(diào)用運行到調(diào)用當(dāng)前函數(shù)的過程以及如何被調(diào)用有關(guān)。 1. this的誕生 假設(shè)我們有一個speak函數(shù),通過this的運行機(jī)制,當(dāng)使用不同的方法調(diào)用它時,我們可以靈活的輸出不同的name。 var me = {name: me}; function speak() { console.log(this.name); }...

    tianren124 評論0 收藏0
  • Brief introduction of how to 'Call, Apply and

    摘要:關(guān)于在絕大多數(shù)情況下,函數(shù)的調(diào)用方式?jīng)Q定了的值。不能在執(zhí)行期間被賦值,并且在每次函數(shù)被調(diào)用時的值也可能會不同。它們除了參數(shù)略有不同,其功能完全一樣。它們的第一個參數(shù)都為將要指向的對象。 關(guān)于 this 在絕大多數(shù)情況下,函數(shù)的調(diào)用方式?jīng)Q定了this的值。this不能在執(zhí)行期間被賦值,并且在每次函數(shù)被調(diào)用時this的值也可能會不同。 全局 this window.something = ...

    incredible 評論0 收藏0
  • 【Change Detection系列一】$digest 在Angular新版本中重生

    摘要:感謝您的閱讀如果喜歡這篇文章請點贊。它對我意義重大,它能幫助其他人看到這篇文章。對于更高級的文章,你可以在或上跟隨我。 I’ve worked with Angular.js for a few years and despite the widespread criticism I think this is a fantastic framework. I’ve started w...

    legendaryedu 評論0 收藏0
  • JS '嚴(yán)格模式'

    摘要:一篇簡單的探索,這個嚴(yán)格模式出來很早了,很多人都有寫過,而且官方文檔很詳細(xì)。 原文鏈接:乖小鬼的簡書 為什么想到寫這么一篇文章呢,來源在于回答一個 SG上面的問題。那么問題是這樣子的。 var a = 2; function foo(){ console.log(this.a);} foo(); 以上代碼,執(zhí)行的結(jié)果是什么?? 如果你回答是2,那么對了多少? 只能說對了一半,為什么...

    sunnyxd 評論0 收藏0

發(fā)表評論

0條評論

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