摘要:在綁定函數(shù)中,對(duì)象將解析為傳入的對(duì)象。返回值與函數(shù)相同的新函數(shù)注意是新函數(shù),對(duì)象和初始參數(shù)除外。異常如果指定的不是函數(shù),則將引發(fā)異常。看到這里我們基本對(duì)方法的使用有個(gè)初步認(rèn)識(shí)了,那先來(lái)看看具體示例再分析分析。不知道看了兩幅圖,記住了方法沒(méi)
首發(fā)于搞起博客
bind方法,寫(xiě)javascript的肯定都見(jiàn)過(guò),我也是,但是,不是經(jīng)常用的話(huà),基本上過(guò)一段時(shí)間就會(huì)模糊了,所以,決定把它轉(zhuǎn)化成圖像,估計(jì)比較容易記憶。
概念我們來(lái)看看MSDN上關(guān)于javascript bind函數(shù)的解釋?zhuān)?/p>
對(duì)于給定函數(shù),創(chuàng)建具有與原始函數(shù)相同的主體的綁定函數(shù)。 在綁定函數(shù)中,this 對(duì)象將解析為傳入的對(duì)象。 綁定函數(shù)具有指定的初始參數(shù)。
哈哈哈哈,是不是懵逼了?
莫慌,我們慢慢來(lái)看,看看用法先:
用法function.bind(thisArg[,arg1[,arg2[,argN]]])
參數(shù)function
必選。 一個(gè)函數(shù)對(duì)象。
thisArg
必選。 this 關(guān)鍵字可在新函數(shù)中引用的對(duì)象。
arg1[,arg2[,argN]]]
可選。 要傳遞到新函數(shù)的參數(shù)的列表。
與 function 函數(shù)相同的新函數(shù)(注意是新函數(shù)!),thisArg 對(duì)象和初始參數(shù)除外。
異常如果指定的 function 不是函數(shù),則將引發(fā) TypeError 異常。
看到這里我們基本對(duì)bind方法的使用有個(gè)初步認(rèn)識(shí)了,那先來(lái)看看具體示例再分析分析。
示例 this綁定/** * 定義初始的函數(shù) * 這個(gè)函數(shù)的功能很簡(jiǎn)單,就是判斷數(shù)字是否在某個(gè)范圍 */ var checkNumericRange = function (value) { if (typeof value !== "number") return false; else return value >= this.minimum && value <= this.maximum; } // 這里的范圍將會(huì)被綁定到函數(shù)中的this值去 var range = { minimum: 10, maximum: 20 }; // 開(kāi)始綁定! var boundCheckNumericRange = checkNumericRange.bind(range); // 使用一個(gè)數(shù)字來(lái)驗(yàn)證下這個(gè)函數(shù) var result = boundCheckNumericRange (12); document.write(result); // 輸出: true
好了,這個(gè)簡(jiǎn)單的示例看完了,我們知道了,使用bind將一個(gè)對(duì)象綁定到某個(gè)函數(shù)中,這個(gè)函數(shù)中所使用的this就會(huì)指向綁上去的函數(shù)了,不羅嗦了,畫(huà)個(gè)圖理解。
再看個(gè)稍微有點(diǎn)不同的例子,其實(shí)也差不多:
// 創(chuàng)建一個(gè)帶有剛才那個(gè)方法的對(duì)象, // 并且方法調(diào)用當(dāng)前這個(gè)對(duì)象中的最大值和最小值 var originalObject = { minimum: 50, maximum: 100, checkNumericRange: function (value) { if (typeof value !== "number") return false; else return value >= this.minimum && value <= this.maximum; } } // 檢查10是否在范圍內(nèi) var result = originalObject.checkNumericRange(10); document.write(result + " "); // 輸出: false // 還是同樣的配方,還是熟悉的味道 var range = { minimum: 10, maximum: 20 }; // bind技能要正在引導(dǎo)... var boundObjectWithRange = originalObject.checkNumericRange.bind(range); // 看看這次的效果 var result = boundObjectWithRange(10); document.write(result); // 輸出: true, 有效了!參數(shù)綁定
在參數(shù)中還可以有幾個(gè)參數(shù)帶進(jìn)來(lái)
arg1[,arg2[,argN]]]
// 又是定義一個(gè)函數(shù),這次是4個(gè)參數(shù) var displayArgs = function (val1, val2, val3, val4) { document.write(val1 + " " + val2 + " " + val3 + " " + val4); } var emptyObject = {}; // 使用bind,產(chǎn)生一個(gè)新函數(shù) // 這個(gè)新函數(shù)的第一第二個(gè)參數(shù)已經(jīng)定死了為這兩個(gè),再有參數(shù)往后排 var displayArgs2 = displayArgs.bind(emptyObject, 12, "a"); // 這里就是兩個(gè)排隊(duì)的參數(shù)了 displayArgs2("b", "c"); // 輸出: 12 a b c
恩,知道,上圖再說(shuō)對(duì)吧
上圖可以看出bind時(shí)傳入的參數(shù),在新函數(shù)中作為最先使用的參數(shù),但是它并沒(méi)有改變?cè)瘮?shù)參數(shù)的個(gè)數(shù)。
不知道看了兩幅圖,記住了bind方法沒(méi)?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/85772.html
摘要:作為女性,你又來(lái)自互聯(lián)網(wǎng)技術(shù)不太發(fā)達(dá)的希臘。希臘目前可能還存在一些針對(duì)女性的性別歧視,但并不明顯,不然我可能會(huì)被影響到。實(shí)際上,有時(shí)候希臘在性別平等方面比其他西方國(guó)家更進(jìn)步。 本文僅用于學(xué)習(xí)和交流,不用于商業(yè)目的。非商業(yè)轉(zhuǎn)載請(qǐng)注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/art... 訪談嘉賓: Lea VerouW3C CSS工作組特邀專(zhuān)...
摘要:作為女性,你又來(lái)自互聯(lián)網(wǎng)技術(shù)不太發(fā)達(dá)的希臘。希臘目前可能還存在一些針對(duì)女性的性別歧視,但并不明顯,不然我可能會(huì)被影響到。實(shí)際上,有時(shí)候希臘在性別平等方面比其他西方國(guó)家更進(jìn)步。 本文僅用于學(xué)習(xí)和交流,不用于商業(yè)目的。非商業(yè)轉(zhuǎn)載請(qǐng)注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/art... 訪談嘉賓: Lea VerouW3C CSS工作組特邀專(zhuān)...
摘要:作為女性,你又來(lái)自互聯(lián)網(wǎng)技術(shù)不太發(fā)達(dá)的希臘。希臘目前可能還存在一些針對(duì)女性的性別歧視,但并不明顯,不然我可能會(huì)被影響到。實(shí)際上,有時(shí)候希臘在性別平等方面比其他西方國(guó)家更進(jìn)步。 本文僅用于學(xué)習(xí)和交流,不用于商業(yè)目的。非商業(yè)轉(zhuǎn)載請(qǐng)注明作譯者、出處,并保留本文的原始鏈接:http://www.ituring.com.cn/art... 訪談嘉賓: Lea VerouW3C CSS工作組特邀專(zhuān)...
摘要:寫(xiě)文章不容易,點(diǎn)個(gè)贊唄兄弟專(zhuān)注源碼分享,文章分為白話(huà)版和源碼版,白話(huà)版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學(xué)習(xí)吧研究基于版本如果你覺(jué)得排版難看,請(qǐng)點(diǎn)擊下面鏈接或者拉到下面關(guān)注公眾號(hào)也可以吧原理源碼版之詳解今天我們來(lái)看看處 寫(xiě)文章不容易,點(diǎn)個(gè)贊唄兄弟專(zhuān)注 Vue 源碼分享,文章分為白話(huà)版和 源碼版,白話(huà)版助于理解工作原理,源碼版助于了解內(nèi)部詳情,讓我們一起學(xué)習(xí)吧研究基于 ...
摘要:本文是圖說(shuō)系列文章的第四篇。它們表示一種可以在普遍流行機(jī)器上高效使用的指令集合。這是因?yàn)槭且环N稱(chēng)為堆棧機(jī)器。盡管是根據(jù)堆棧機(jī)器來(lái)設(shè)計(jì)的,但是這并不是它在真實(shí)物理機(jī)器上工作的方式。這些內(nèi)容稱(chēng)為段。 本文是圖說(shuō) WebAssembly 系列文章的第四篇。如果您還未閱讀之前的文章,建議您從第一篇入手。 WebAssembly 是一種使得除 JavaScript 以外的編程語(yǔ)言也能運(yùn)行在網(wǎng)頁(yè)上...
閱讀 3094·2021-09-22 15:54
閱讀 3981·2021-09-09 11:34
閱讀 1767·2019-08-30 12:48
閱讀 1161·2019-08-30 11:18
閱讀 3431·2019-08-26 11:48
閱讀 913·2019-08-23 17:50
閱讀 2119·2019-08-23 17:17
閱讀 1240·2019-08-23 17:12