JS中的call、apply、bind的理解

apply&call&bind

因?yàn)閷?duì)象obj的方法被對(duì)象document.getElementsByTagName("div")[0]引用,所以objApply內(nèi)的this就不在指向obj了,而是指向?qū)ο骴ocument.getElementsByTagName("div")[0] , 所以輸出的是undefind

解決方法1 :通過(guò)匿名函數(shù)來(lái)調(diào)用對(duì)象中的objApply方法,這樣就不會(huì)改變obj.objApply里面this的指向了

解決方法2 : 通過(guò)bind或者apply,call等方法可以把objApply里面的this進(jìn)行重新綁定新的指向

在開(kāi)發(fā)中call跟apply還能用在繼承上面,在sleep的方法繼承了eat的方法,所以可以能獲取到this.name

此時(shí)用apply重定向了,為什么會(huì)報(bào)NaN呢?

因?yàn)閍geState方法里面的this指向的是age,并不是Person所以輸出的是NaN

解決方法1

解決方法2?

解決方法三

apply() 的第二個(gè)參數(shù)arguments

這里面的Person.apply(this,arguments)?

this代表的就是Teacher這個(gè)對(duì)象

arguments 是一個(gè)數(shù)組來(lái)的,也就是 ['美瑩' , '19' , 'good']?

就是說(shuō)用Teacher去執(zhí)行Person這個(gè)類(lèi)里面的內(nèi)容,在Person這個(gè)類(lèi)里面存在this.name等之類(lèi)的語(yǔ)句,這樣就將屬性創(chuàng)建到了Teacher對(duì)象里面了

也可以換一種思路來(lái)理解

就是? 警察抓小偷 老師教書(shū) 清潔工打掃衛(wèi)生

========================================

有一天清潔工也想要抓小偷

則 警察.抓小偷.apply(清潔工,小偷)

清潔工也能抓小偷了

===========================================

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容