寫給新人的call apply bind

2021-09-22 19:41:35 字數 1766 閱讀 5385

語法:

1

fun.call

(thisarg[, arg1[, arg2[, ...]]])

thisarg:fun函式執行時指定的this值,可能的值為:

例如:

123

456

functiona()

functionb()

{}a.call(b); // functionb()

{}

經常會看到這種使用情況:

123

45

function

list()

list(1,2,3); // [1, 2, 3]

為什麼能實現這樣的功能將arguments轉成陣列?首先call了之後,this指向了所傳進去的arguments。我們可以假設slice方法的內部實現是這樣子的:建立乙個新陣列,然後for迴圈遍歷this,將this[i]乙個個地賦值給新陣列,最後返回該新陣列。因此也就可以理解能實現這樣的功能了。

語法:

123

// chrome 14 以及 internet explorer 9 仍然不接受類陣列物件。

// thisarg的可能值和call一樣

(thisarg[, argsarray])

例如:

123

var numbers = [5, 6, 2, 3, 7];

varconsole.log(max) // 7

語法:

1

fun.bind

(thisarg[, arg1[, arg2[, ...]]]);

bind()方法會建立乙個新函式,稱為繫結函式。

當呼叫這個繫結函式時,thisarg引數作為 this,第二個以及以後的引數加上繫結函式執行時本身的引數按照順序作為原函式的引數來呼叫原函式。

簡單地說,bind會產生乙個新的函式,這個函式可以有預設的引數。

123

4567

89

function

list()

var leadingthirtysevenlist = list.bind(undefined, 37); // 繫結函式

varlist = leadingthirtysevenlist(1, 2, 3); // 呼叫繫結函式

console.log(list); // [37, 1, 2, 3]

把類陣列換成真正的陣列,bind能夠更簡單地使用:

123

var slice = array.prototype.slice;

// ...

123

4

var unboundslice = array.prototype.slice;

(unboundslice);

// ...

slice(arguments); // 直接呼叫,簡單

相同之處:改變函式體內 this 的指向。

不同之處:

gitfork

web開發

上次更新:2019-04-20 19:28:31

寫給設計新人的小指導

何為資深?沒有什麼明確的界定。有的公司3年叫做資深,有的公司5年叫做資深,也有些企業30歲能成為總監.資深如何界定也許並不那麼的重要,解決問題的能力和經驗積累到一定程度自然就會有自己的設計思維。或者說資深是設計專業維度裡別人定義你的一種方式。但新人階段,是自己必須要經歷的,而且就是你即將或是剛剛入行...

《人人都是CPJL》寫給新人

第1章 寫給 1到 3 歲的cpjl don t make me think 點石成金 訪客至上的網頁設計秘笈 web的設計 不要讓使用者思考 產品就是用來解決某個問題的東西,可以是有形的實物,也可以是無形的服務。在使用者目標和公司的商業目標之間尋找平衡。對比項典型的傳統行業 網際網路 軟體行業 行...

寫給剛接觸c c 語言的新人。

首先自己熟悉c c 語言的發展和一些其他的語言對比的優良性,了解到c c 語言的發展前景。c c 語言的前景還是蠻不錯的,剛入市的話薪資一般在5000以上,少數的少一點,不會太低,基本幾年時間內該語言會一直被重視,發展前景很好。在一些發達城市有不錯的市場人才需求,所以我就寫了這篇部落格來講一下新手的...