国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

call和apply的區別和用法

ideaa / 3477人閱讀

摘要:和的區別和作用都是把綁定到的作用,即改變的指向,然而唯一的區別就是傳遞的參數必須得是數組的形式傳遞,而則直接連續參數傳遞和在什么地方可以用到呢當一個對象需要調用另外一個對象里面的方法的時候就可以用到和,和可以理解成是繼承另外一個對象的方法,

call和apply的區別

obj.call(thisObj, arg1, arg2, ...);
obj.apply(thisObj, [arg1, arg2, ...]);
call和apply作用都是把obj綁定到thisObj的作用,即改變this的指向,然而唯一的區別就是apply傳遞的參數必須得是數組的形式傳遞,而call則直接連續參數傳遞

call和apply在什么地方可以用到呢?

當一個對象需要調用另外一個對象里面的方法的時候就可以用到call和apply,call和Apply可以理解成是繼承另外一個對象的方法,以下代碼舉例:

首先,我們先建立兩個對象,obj1和obj2

 var name = "全局中的name";
    var obj1 = {
        name:"obj1中的name",
        func1:function(){
            console.log(this.name);
        },
        func2:function (a,b) {
            console.log(a+b);
            return a+b;
        }
    }

    var obj2 = {
        name:"obj2中的name"
    }

如果obj2對象要調用obj1中的func1方法,則

 obj1.func1.call(obj2); //輸出:obj2中的name
 obj1.func1.apply(obj2);//輸出:obj2中的name

call和apply第一個參數都是表示obj1綁定的對象,如果obj1要綁定到this,此時obj1就是綁定到全局,如:

 obj1.func1.call(this);//輸出:全局中的name
 obj1.func1.apply(this);//輸出:全局中的name

如果obj2對象要調用obj1中的func2方法,則

  obj1.func2.call(obj2,1,2);//輸出:3
  obj1.func2.apply(obj2,[1,2]);//輸出:3

此時func2方法是有參數的,call和apply中第二個參數開始是傳給func2方法的參數,但是call參數是直接連續傳遞,而apply傳遞參數是以一個數組傳遞

全部代碼展示:

  var name = "全局中的name";
    var obj1 = {
        name:"obj1中的name",
        func1:function(){
            console.log(this.name);
        },
        func2:function (a,b) {
            console.log(a+b);
            return a+b;
        }
    }

    var obj2 = {
        name:"obj2中的name"
    }

    obj1.func1.call(this);//輸出:全局中的name
    obj1.func1.apply(this);//輸出:全局中的name

    obj1.func1.call(obj2); //輸出:obj2中的name
    obj1.func1.apply(obj2);//輸出:obj2中的name

    obj1.func2.call(obj2,1,2);//輸出:3
    obj1.func2.apply(obj2,[1,2]);//輸出:3

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89934.html

相關文章

  • callapply區別用法

    摘要:和的區別和作用都是把綁定到的作用,即改變的指向,然而唯一的區別就是傳遞的參數必須得是數組的形式傳遞,而則直接連續參數傳遞和在什么地方可以用到呢當一個對象需要調用另外一個對象里面的方法的時候就可以用到和,和可以理解成是繼承另外一個對象的方法, call和apply的區別 obj.call(thisObj, arg1, arg2, ...);obj.apply(thisObj, [arg1...

    animabear 評論0 收藏0
  • 「干貨」細說 call、apply 以及 bind 區別用法

    摘要:的調用者,將會指向這個對象。此外,還可以擴展自己的其他方法。的使用最后來說說。不同的是,方法的返回值是函數,并且需要稍后調用,才會執行。而和則是立即調用??偨Y和的主要作用,是改變對象的執行上下文,并且是立即執行的。 前言 上一篇文章 《「前端面試題系列4」this 的原理以及用法》 中,提到了 call 和 apply。 它們最主要的作用,是改變 this 的指向。在平時的工作中,除了...

    GraphQuery 評論0 收藏0
  • JavaScript 中 callapply、bind 用法區別

    摘要:和類似,都是調用函數,并指定函數的值和參數,區別在于傳入參數是通過參數列表的形式,傳入參數是通過數組的形式方法與前兩個不同,它創建一個新的函數,在調用新函數時,會調用原函數,并指定原函數的值和參數。執行的時候并沒有調用函數。 簡介 JavaScript 中有三個方法Function.prototype.call()、Function.prototype.apply()和Function...

    wind3110991 評論0 收藏0
  • JS中call(),apply()bind()方法

    摘要:奔著一星期徹底弄清楚一個小知識點的目的這次的目標是方法在實際項目中經常會用到這三個函數只是簡單的知道都是用來進行上下文綁定的這三個函數都可以實現現在看來這三者還是有很大區別的特別是和其他兩個的區別先說和目的是改變函數的執行上下文下面列舉一些 奔著一星期徹底弄清楚一個javascript小知識點的目的,這次的目標是call apply bind方法 在實際項目中,經常會用到這三個函數,只...

    nifhlheimr 評論0 收藏0

發表評論

0條評論

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