用例子去理解call和apply

2021-10-11 08:42:18 字數 1231 閱讀 5732

舉乙個例子

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 is 喵喵

var name =

'小王'

, age =

17var obj =

,年齡:$,從

$來,到$`

)}else

,年齡:$`

)}}}

var db =

obj.

play()

// 姓名: 小張, 年齡: 17 說明這個時候年齡的this指向window

console.

log(window.age, window.name)

// 17 小王

obj.play.

(db,

['1村'

,'2村'])

// 第乙個引數指向 姓名:唐三彩,年齡:50,從1村來,到2村

obj.play.

(db)

// 有this指向, 但是沒第二個引數, // 走play的else,但是db裡面沒有objage, 會顯示 姓名:唐三彩,年齡: undefined

obj.play.

call

(db)

// 結果同上

obj.play.

bind

(db)()

// 結果同上, 注意bind需要後面新增()

obj.play.

call

(db,

'1村'

)// 現在還是指向db內部,只傳了乙個引數 這種情況等於

obj.

play

('1村'

, undefined)

obj.play.

call

(db,

'1村'

,'2村'

)// 姓名:唐三彩,年齡:50,從1村來,到2村

Javascript中call和apply的區別

如下 function add a,b function reduce a,b add.call reduce,1,3 將add方法運用到reduce,結果為4 如下例 如下 複製 function b b window b.call window b.call a 2,3 a 再看乙個複雜的例子 ...

新手理解 apply 和 call

假設我們有乙隻喵星人 const cat can run 還可以跳 包括跳牆是可以的 jump can jump 複製 同時,它還有乙個小夥伴汪星人 const dog can run 還會吠 bark bark loudly 馬戲團的?還會做算數 count a,b 複製 不難發現,貓狗各有所長....

深入理解 call 和 apply

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