
因?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(清潔工,小偷)
清潔工也能抓小偷了
===========================================