摘要:同樣會綁定,也會穿參數(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; });
總之,官方都廢棄了,你還執(zhí)著啥?
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/1250.html
摘要:不能應(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 都是...
摘要:首先我們可以通過給目標(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 都是...
摘要:目錄函數(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ù)類型上看:...
摘要:返回的綁定函數(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的研...
摘要:返回的綁定函數(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的研...
閱讀 736·2023-04-25 19:43
閱讀 3981·2021-11-30 14:52
閱讀 3807·2021-11-30 14:52
閱讀 3871·2021-11-29 11:00
閱讀 3802·2021-11-29 11:00
閱讀 3904·2021-11-29 11:00
閱讀 3580·2021-11-29 11:00
閱讀 6183·2021-11-29 11:00