新手理解 apply 和 call

2021-09-11 10:14:15 字數 1052 閱讀 9651

假設我們有乙隻喵星人:

const cat =  can run`)

},// 還可以跳(包括跳牆是可以的)

jump() can jump`)

}}複製**

同時, 它還有乙個小夥伴汪星人:

const dog =  can run`)

},// 還會吠

bark() bark loudly`)

},// 馬戲團的?, 還會做算數

count(a, b) + $ = $`)

}}複製**

不難發現, 貓狗各有所長. 貓咪可以跳牆, 但是 ?? 可以吠叫. 假如, 現在的情況提別緊急, 緊急到了什麼地步呢. 大家都要到牆頭上才能保證安全. 這個時候貓咪直接

cat.jump()

複製**

成功翻上牆頭.

然而, 現在 ?? 就尷尬了. 跳上牆頭??? 不會

就乙個bark()喊半天也沒有用呀!!!

複製**

?? 也順利脫險啦. 跳上了牆頭, 狗狗歡快的bark()這時候貓咪不樂意了, 它也想吠叫, 但是沒有這個本領. 這時候??也大方的借出了自己的 bark 本領給了貓咪.

複製**

兩隻小可愛歡快的在牆頭上叫起來 ^_^.

狗狗, 並沒有學會 jump 的本領, 它只是在緊急時刻借用了貓咪的跳牆方法.

我們知道我們的 ?? 來自馬戲團, 具備了算數的能力. 不信試試?

dog.count(1, 2)

複製**

簡直了不得, 有木有? 然而, 喵星人現在也想要去馬戲團. 可是它不會算數, 就需要從汪星人那裡借來count本領. 那麼就尷尬了.

既然要算加法, 就需要把兩個加數給人家嘛. 怎麼給呢? 只需要把count方法需要的引數拼接到乙個陣列裡就可以啦. 就像醬紫.

這個樣式兒. 簡直是舒服呀!

深入理解 call 和 apply

js中乙個主要的內容就是this的指向問題.共同之處 他們都能改變this的指向,都是在特定的作用域中呼叫函式,等於設定函式體內this物件的值,以擴充函式賴以執行的作用域。一般來說,this總是指向呼叫某個方法的物件,但是使用call 和說到他們的功能,我就拿call來舉例子吧,因為他們的功能是一...

我所理解的call和apply

一 先來看看示例 這兩個方法的用途都在特定的作用域中呼叫函式,實際上等於設定函式體內this物件的值。例一 123 4567 891011 1213 1415 function box num1,num2 function sum num1,num2 alert sum 10,10 function...

用例子去理解call和apply

舉乙個例子function animals animals.prototype console.log my name is this name var dog newanimals dog.say my name is 旺財 但是這個時候有乙個貓 cat dog.say.cat my name i...