不懂add.call(subs,5,3)传三个参数的意义何在?sub存在的意义是什么

不懂add.call(subs,5,3)传三个参数的意义何在?sub存在的意义是什么

function add(a,b){

   alert(a + b);

}

function subs(a,b){

   alert(a-b);

}

add.call(subs,5,3);  //8 subs-->add ===>add(5,3) subs只能引用一个已存在的对象

add.apply(subs,[5,3]); // 同上,apply为两个参数

subs.call(add,4,2) //2

subs.apply(add,[4,2]) //2


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

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

2回答
妮可妮可妮_ 2018-07-10 14:51:05

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

call和apply的作用:

  改变this的指向,第一个参数为你要传入的对象,传入后函数的this就指向了这个对象,后面的参数为你为函数传递的参数值


妮可妮可妮_ 2018-07-10 10:52:28

就两个参数 

第一个add是为了改变this指向,A.call(B)相当于 B执行了 A的方法,改变this指向,

第二和第三个才是参数

  • 提问者 TeLiCH #1
    那为什么不直接subs.call(4,2),或者subs(4,2)啊
    2018-07-10 11:34:27
  • 妮可妮可妮_ 回复 提问者 TeLiCH #2
    a.call(b);是想要a对象的方法应用到b对象上,b对象并没有a的方法,所以想要this指向b就需要这样去写,这只是一个简单的小例子,可以试验一下call的作用
    2018-07-10 11:50:33
  • 提问者 TeLiCH 回复 妮可妮可妮_ #3
    一般call和apply运用到哪里,实际作用是什么,可以举个例子吗?
    2018-07-10 14:11:08
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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