摘要:同樣會(huì)綁定,也會(huì)穿參數(shù),但是不會(huì)立即執(zhí)行我是內(nèi)部的我是內(nèi)部的類似數(shù)組,但不是真的數(shù)組,好吧,就把它當(dāng)成數(shù)組吧,它同樣擁有而且也可以通過(guò)下標(biāo)訪問(wèn)關(guān)于下面的官方語(yǔ)言警告在嚴(yán)格模式下,第版禁止使用。
關(guān)于這3個(gè)貨,網(wǎng)上有很多文章介紹,我這邊還是記錄下并加上自己的理解,還有arguments函數(shù)內(nèi)置對(duì)象順便也記錄下:
簡(jiǎn)單的說(shuō)apply和call 會(huì)綁定第一個(gè)參數(shù)的作用域給調(diào)用函數(shù)對(duì)象實(shí)例,并會(huì)執(zhí)行調(diào)用函數(shù),還可以傳參數(shù)
apply 第二個(gè)參數(shù)是數(shù)組,call 是可變長(zhǎng)度參數(shù)
apply、call:
例子來(lái)個(gè):
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同樣會(huì)綁定,也會(huì)穿參數(shù),但是不會(huì)立即執(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 而且也可以通過(guò)下標(biāo)訪問(wèn):
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ǔ)言:
警告:在嚴(yán)格模式下,第5版 ECMAScript (ES5) 禁止使用 arguments.callee()。當(dāng)一個(gè)函數(shù)必須調(diào)用自身的時(shí)候, 避免使用 arguments.callee(),
通過(guò)要么
給函數(shù)表達(dá)式一個(gè)名字,要么使用一個(gè)函數(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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/1250.html
摘要:不能應(yīng)用下的等方法。首先我們可以通過(guò)給目標(biāo)函數(shù)指定作用域來(lái)簡(jiǎn)單實(shí)現(xiàn)方法保存,即調(diào)用方法的目標(biāo)函數(shù)考慮到函數(shù)柯里化的情況,我們可以構(gòu)建一個(gè)更加健壯的這次的方法可以綁定對(duì)象,也支持在綁定的時(shí)候傳參。原因是,在中,多次是無(wú)效的。 bind 是返回對(duì)應(yīng)函數(shù),便于稍后調(diào)用;apply 、call 則是立即調(diào)用 。 apply、call 在 javascript 中,call 和 apply 都是...
摘要:首先我們可以通過(guò)給目標(biāo)函數(shù)指定作用域來(lái)簡(jiǎn)單實(shí)現(xiàn)方法保存,即調(diào)用方法的目標(biāo)函數(shù)考慮到函數(shù)柯里化的情況,我們可以構(gòu)建一個(gè)更加健壯的這次的方法可以綁定對(duì)象,也支持在綁定的時(shí)候傳參。原因是,在中,多次是無(wú)效的。而則會(huì)立即執(zhí)行函數(shù)。 bind 是返回對(duì)應(yīng)函數(shù),便于稍后調(diào)用;apply 、call 則是立即調(diào)用 。 apply、call 在 javascript 中,call 和 apply 都是...
摘要:目錄函數(shù)的聲明函數(shù)的屬性和方法函數(shù)的作用域閉包知識(shí)點(diǎn)小結(jié)關(guān)于函數(shù),可以從以下個(gè)方面去理解首先,數(shù)據(jù)類型上看函數(shù)在中是一種數(shù)據(jù)類型,是對(duì)象的一種其次,從功能上看函數(shù)本質(zhì)上是一段反復(fù)調(diào)用的代碼塊最后,從地位上看函數(shù)在中和其他基本數(shù)據(jù)類型一樣,可 目錄 1.函數(shù)的聲明 2.函數(shù)的屬性和方法 3.函數(shù)的作用域 4.閉包知識(shí)點(diǎn) 5.小結(jié) 關(guān)于函數(shù),可以從以下3個(gè)方面去理解:首先,數(shù)據(jù)類型上看:...
摘要:返回的綁定函數(shù)也能使用操作符創(chuàng)建對(duì)象這種行為就像把原函數(shù)當(dāng)成構(gòu)造器。同時(shí),將第一個(gè)參數(shù)以外的其他參數(shù),作為提供給原函數(shù)的預(yù)設(shè)參數(shù),這也是基本的顆?;A(chǔ)。 今天想談?wù)勔坏狼岸嗣嬖囶},我做面試官的時(shí)候經(jīng)常喜歡用它來(lái)考察面試者的基礎(chǔ)是否扎實(shí),以及邏輯、思維能力和臨場(chǎng)表現(xiàn),題目是:模擬實(shí)現(xiàn)ES5中原生bind函數(shù)。也許這道題目已經(jīng)不再新鮮,部分讀者也會(huì)有思路來(lái)解答。社區(qū)上關(guān)于原生bind的研...
摘要:返回的綁定函數(shù)也能使用操作符創(chuàng)建對(duì)象這種行為就像把原函數(shù)當(dāng)成構(gòu)造器。同時(shí),將第一個(gè)參數(shù)以外的其他參數(shù),作為提供給原函數(shù)的預(yù)設(shè)參數(shù),這也是基本的顆?;A(chǔ)。 今天想談?wù)勔坏狼岸嗣嬖囶},我做面試官的時(shí)候經(jīng)常喜歡用它來(lái)考察面試者的基礎(chǔ)是否扎實(shí),以及邏輯、思維能力和臨場(chǎng)表現(xiàn),題目是:模擬實(shí)現(xiàn)ES5中原生bind函數(shù)。也許這道題目已經(jīng)不再新鮮,部分讀者也會(huì)有思路來(lái)解答。社區(qū)上關(guān)于原生bind的研...
閱讀 847·2023-04-25 19:43
閱讀 4116·2021-11-30 14:52
閱讀 3930·2021-11-30 14:52
閱讀 4027·2021-11-29 11:00
閱讀 3922·2021-11-29 11:00
閱讀 4039·2021-11-29 11:00
閱讀 3770·2021-11-29 11:00
閱讀 6608·2021-11-29 11:00