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

資訊專欄INFORMATION COLUMN

JS 關(guān)于 bind ,call,apply 和arguments p8

番茄西紅柿 / 1311人閱讀

摘要:同樣會綁定,也會穿參數(shù),但是不會立即執(zhí)行我是內(nèi)部的我是內(nèi)部的類似數(shù)組,但不是真的數(shù)組,好吧,就把它當(dāng)成數(shù)組吧,它同樣擁有而且也可以通過下標(biāo)訪問關(guān)于下面的官方語言警告在嚴(yán)格模式下,第版禁止使用。

關(guān)于這3個貨,網(wǎng)上有很多文章介紹,我這邊還是記錄下并加上自己的理解,還有arguments函數(shù)內(nèi)置對象順便也記錄下:

 

簡單的說apply和call 會綁定第一個參數(shù)的作用域給調(diào)用函數(shù)對象實例,并會執(zhí)行調(diào)用函數(shù),還可以傳參數(shù)

apply 第二個參數(shù)是數(shù)組,call 是可變長度參數(shù)

apply、call:

例子來個:

function x(t,v){
     console.log(this.id);
     if(t){
         console.log(t);
     }
     if(v){
         console.log(v);
     }
}

var id = 我是外部ID;

var obj = { id:我是內(nèi)部obj的ID }

x(); //我是外部ID

x.apply(obj); // 我是內(nèi)部obj的ID

x.call(obj); // 我是內(nèi)部obj的ID

x.apply(obj,[test]);
 //     我是內(nèi)部obj的ID
 //     test


x.call(obj,test,test2);
 //     我是內(nèi)部obj的ID
 //     test
 //     test2

是不是一下就明白了。

 

bind:

bind同樣會綁定,也會穿參數(shù),但是不會立即執(zhí)行

x.bind(obj)() ; // 我是內(nèi)部obj的ID

var x_copy = x.bind(obj);
x_copy();//我是內(nèi)部obj的ID

 

arguments:

類似數(shù)組,但不是真的數(shù)組,好吧,就把它當(dāng)成數(shù)組吧,它同樣擁有l(wèi)ength 而且也可以通過下標(biāo)訪問:

function x(){
   console.log(arguments.length);
   
   var j = 0;
   for(let i=0;i){
       j += arguments[i];
   }

   console.log([j >>],j);
} ;

x();
// 0
// [j >>] undefined

x(1);
// 1
// [j >>] 1

x(1,2);
// 2
// [j >>] 3

 

關(guān)于arguments.callee():

下面的官方語言:
警告:嚴(yán)格模式下,第5版 ECMAScript (ES5) 禁止使用 arguments.callee()。當(dāng)一個函數(shù)必須調(diào)用自身的時候, 避免使用 arguments.callee(), 通過要么給函數(shù)表達(dá)式一個名字,要么使用一個函數(shù)聲明.

不多寫,有興趣的可以去這看看

arguments.callee

如果需要調(diào)用自身可以使用函數(shù)表達(dá)式(下面是官方的例子):

[1,2,3,4,5].map(function factorial (n) {
    return !(n > 1) ? 1 : factorial(n-1)*n;
});
  • 該函數(shù)可以像代碼內(nèi)部的任何其他函數(shù)一樣被調(diào)用
  • 它不會在外部作用域中創(chuàng)建一個變量 (除了 IE 8 及以下)
  • 它具有比訪問arguments對象更好的性能

總之,官方都廢棄了,你還執(zhí)著啥?

 

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

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

相關(guān)文章

  • JS中的callapply、bind方法詳解

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

    zombieda 評論0 收藏0
  • JS基礎(chǔ)篇--call、applybind方法詳解

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

    lastSeries 評論0 收藏0
  • JavaScript函數(shù)(二)

    摘要:目錄函數(shù)的聲明函數(shù)的屬性和方法函數(shù)的作用域閉包知識點小結(jié)關(guān)于函數(shù),可以從以下個方面去理解首先,數(shù)據(jù)類型上看函數(shù)在中是一種數(shù)據(jù)類型,是對象的一種其次,從功能上看函數(shù)本質(zhì)上是一段反復(fù)調(diào)用的代碼塊最后,從地位上看函數(shù)在中和其他基本數(shù)據(jù)類型一樣,可 目錄 1.函數(shù)的聲明 2.函數(shù)的屬性和方法 3.函數(shù)的作用域 4.閉包知識點 5.小結(jié) 關(guān)于函數(shù),可以從以下3個方面去理解:首先,數(shù)據(jù)類型上看:...

    用戶84 評論0 收藏0
  • 從一道面試題,到“我可能看了假源碼”

    摘要:返回的綁定函數(shù)也能使用操作符創(chuàng)建對象這種行為就像把原函數(shù)當(dāng)成構(gòu)造器。同時,將第一個參數(shù)以外的其他參數(shù),作為提供給原函數(shù)的預(yù)設(shè)參數(shù),這也是基本的顆?;A(chǔ)。 今天想談?wù)勔坏狼岸嗣嬖囶},我做面試官的時候經(jīng)常喜歡用它來考察面試者的基礎(chǔ)是否扎實,以及邏輯、思維能力和臨場表現(xiàn),題目是:模擬實現(xiàn)ES5中原生bind函數(shù)。也許這道題目已經(jīng)不再新鮮,部分讀者也會有思路來解答。社區(qū)上關(guān)于原生bind的研...

    Carson 評論0 收藏0
  • 從一道面試題,到“我可能看了假源碼”

    摘要:返回的綁定函數(shù)也能使用操作符創(chuàng)建對象這種行為就像把原函數(shù)當(dāng)成構(gòu)造器。同時,將第一個參數(shù)以外的其他參數(shù),作為提供給原函數(shù)的預(yù)設(shè)參數(shù),這也是基本的顆?;A(chǔ)。 今天想談?wù)勔坏狼岸嗣嬖囶},我做面試官的時候經(jīng)常喜歡用它來考察面試者的基礎(chǔ)是否扎實,以及邏輯、思維能力和臨場表現(xiàn),題目是:模擬實現(xiàn)ES5中原生bind函數(shù)。也許這道題目已經(jīng)不再新鮮,部分讀者也會有思路來解答。社區(qū)上關(guān)于原生bind的研...

    rockswang 評論0 收藏0

發(fā)表評論

0條評論

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