晕啦,这个call方法

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

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

2回答
好帮手慕糖 2018-04-12 09:22:24

你好,add.call(sub, 3, 1); 这里的this的指向也是改变了呀,可以参考上个问答中的代码。测试下哦,会发现输出的name是sub中定义的name=“sub”哦。

祝学习愉快~

好帮手慕糖 2018-02-06 10:01:22

你好,这里主要是改变this指向的问题,第一段代码中,add.call(sub, 3, 1);实际执行的就是add,因为add是简单的引用类型,所以就直接输出了。而animal.showName.call(cat, ",");中,执行animal.showName这个方法,它的this指向被改变,指向了Cat(),所以最后输出了Cat(),下面是把第一个例子进行了下修改,可以结合理解下:

function add(a, b){
    alert(a + b);
    console.log(this.name)
}
function sub(a, b){
    alert(a - b);
    this.name="sub"   
}
add.call(sub, 3, 1);

祝学习愉快~

  • 为什么add.call(sub, 3, 1); 这里的指向不变,而到animal.showName.call(cat, ",")指向就变了呢?
    2018-04-12 00:15:30
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
进击JavaScript核心 2018
  • 参与学习       466    人
  • 提交作业       74    份
  • 解答问题       635    个

JavaScript不仅能实现静态页面到动态特效的转变,还能完成数据的动态交互,但是关于js到底功能有多强大,大家还是有所期待的,本路径将带你深入到js中,一一揭开JavaScript的神秘面纱。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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