美文网首页我爱编程
JS中的call、apply、bind的理解

JS中的call、apply、bind的理解

作者: hwx_wx | 来源:发表于2018-04-11 21:42 被阅读0次
apply&call&bind

因为对象obj的方法被对象document.getElementsByTagName("div")[0]引用,所以objApply内的this就不在指向obj了,而是指向对象document.getElementsByTagName("div")[0] , 所以输出的是undefind

解决方法1 :通过匿名函数来调用对象中的objApply方法,这样就不会改变obj.objApply里面this的指向了

解决方法2 : 通过bind或者apply,call等方法可以把objApply里面的this进行重新绑定新的指向

在开发中call跟apply还能用在继承上面,在sleep的方法继承了eat的方法,所以可以能获取到this.name

此时用apply重定向了,为什么会报NaN呢?

因为ageState方法里面的this指向的是age,并不是Person所以输出的是NaN

解决方法1

解决方法2 

解决方法三

apply() 的第二个参数arguments

这里面的Person.apply(this,arguments) 

this代表的就是Teacher这个对象

arguments 是一个数组来的,也就是 ['美莹' , '19' , 'good'] 

就是说用Teacher去执行Person这个类里面的内容,在Person这个类里面存在this.name等之类的语句,这样就将属性创建到了Teacher对象里面了

也可以换一种思路来理解

就是  警察抓小偷 老师教书 清洁工打扫卫生

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

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

则 警察.抓小偷.apply(清洁工,小偷)

清洁工也能抓小偷了

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

相关文章

网友评论

    本文标题:JS中的call、apply、bind的理解

    本文链接:https://www.haomeiwen.com/subject/mylrzttx.html