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

資訊專欄INFORMATION COLUMN

JS 關于 bind ,call,apply 和arguments p8

番茄西紅柿 / 1305人閱讀

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

關于這3個貨,網上有很多文章介紹,我這邊還是記錄下并加上自己的理解,還有arguments函數內置對象順便也記錄下:

 

簡單的說apply和call 會綁定第一個參數的作用域給調用函數對象實例,并會執行調用函數,還可以傳參數

apply 第二個參數是數組,call 是可變長度參數

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:我是內部obj的ID }

x(); //我是外部ID

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

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

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


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

是不是一下就明白了。

 

bind:

bind同樣會綁定,也會穿參數,但是不會立即執行

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

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

 

arguments:

類似數組,但不是真的數組,好吧,就把它當成數組吧,它同樣擁有length 而且也可以通過下標訪問:

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

 

關于arguments.callee():

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

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

arguments.callee

如果需要調用自身可以使用函數表達式(下面是官方的例子):

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

總之,官方都廢棄了,你還執著啥?

 

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

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

相關文章

  • JS中的callapplybind方法詳解

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

    zombieda 評論0 收藏0
  • JS基礎篇--callapplybind方法詳解

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

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

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

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

    摘要:返回的綁定函數也能使用操作符創建對象這種行為就像把原函數當成構造器。同時,將第一個參數以外的其他參數,作為提供給原函數的預設參數,這也是基本的顆粒化基礎。 今天想談談一道前端面試題,我做面試官的時候經常喜歡用它來考察面試者的基礎是否扎實,以及邏輯、思維能力和臨場表現,題目是:模擬實現ES5中原生bind函數。也許這道題目已經不再新鮮,部分讀者也會有思路來解答。社區上關于原生bind的研...

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

    摘要:返回的綁定函數也能使用操作符創建對象這種行為就像把原函數當成構造器。同時,將第一個參數以外的其他參數,作為提供給原函數的預設參數,這也是基本的顆粒化基礎。 今天想談談一道前端面試題,我做面試官的時候經常喜歡用它來考察面試者的基礎是否扎實,以及邏輯、思維能力和臨場表現,題目是:模擬實現ES5中原生bind函數。也許這道題目已經不再新鮮,部分讀者也會有思路來解答。社區上關于原生bind的研...

    rockswang 評論0 收藏0

發表評論

0條評論

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