call 和apply

call 和apply

http://img1.sycdn.imooc.com//climg/5eb7656409316ee502510113.jpg

http://img1.sycdn.imooc.com//climg/5eb7656809675bc202470137.jpg

 这两个对比,第一次 用add 取代了subs , 但是第二图里,因为实例化后,cat 取代了animal , 这里怎么判断什么时候能取代,什么时候不能呢


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
WittChen 2020-05-10 10:43:08

同学你好,我就讲call吧,因为apply和call只是传参的形式不同,原理相同。

像call第一个参数是一个对象的引用,JavaScript中的函数本质就是一个对象http://img1.sycdn.imooc.com//climg/5eb7689c09a64ee714340414.jpg如上图,我们使用实例an调用showNameh方法,使用call替换掉了方法中的this,使这个this从an变成了c因此我们打印的是cat,至于你说的什么时候能用什么时候不能用,这个取决于我们写的代码逻辑,因为你的c中有name属性,因此可以弹出值,要是你cat中什么都不写,都没有name属性,要吗弹出undefined,要吗可能之后的程序会报错,这个完全取决于我们写的代码时怎样的


  • 补充下,如果一定说什么时候能取代什么时候不能取代,抛开逻辑问题,那就什么时候都可以取代,只要你传的参数是一个引用就行了
    2020-05-10 10:45:30
  • 个人理解,希望对你理解有帮助,明天老师也会回答,我只是个学员,看到问题特来讨论
    2020-05-10 10:46:45
  • 提问者 悉尼audrey 回复 WittChen #3
    多谢 明白了
    2020-05-10 11:10:23
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师