call 和apply?
add.call(subs,5,3); 课程老师:subs --> 替换add --> 调用add方法 an.showName.call(c,",") 课程老师:an.showName --> 传递给c使用 还是:c --> 替换showName --> 调用showName方法?
课程老师讲解普通对象时,call的概念像是用勺子吃饭,很奇怪,一直在说必须用勺子吃饭,不说为什么;
实例化对象时,成了用筷子吃饭,理解不奇怪,然后结束了
所以说是按照课程老师说的来理解,还是妮可妮可妮老师的描述理解为B.call(A, args1,args2) A 调用 B 方法?
正在回答
你好,
1、add.call(subs,5,3);subs --> 替换add --> 调用add方法,但是实际上调用的还是add方法。
2、an.showName.call(c,",")是an.showName --> 传递给c使用,showName方法中的this指向了c对象,所以输出的是c对象中的name值。
3、同学说的call向勺子在吃饭以及实例化对象像筷子在吃饭,是在哪个小节视频中看到的呢,可以具体指出来,便于准确定位问题所在。
4、B.call(A, args1,args2) 如果A和B都是构造函数,是A使用了B对象中的方法。
祝学习愉快!
醒醒老师你说的第3点,是我自己当时的感受。其实这个老师讲课也很好,只是在某些地方很容易让人陷进去或绕进去。
课程老师虽然讲解了实现过程,但我的疑惑为什么普通函数是这样实现调用add方法,并没有解决。或者说这就是原理,没有为什么,就是这么实现的?
总结:
普通函数
实现过程:add.call(subs,5,3); subs --> 替换add --> 调用add方法,subs虽然替换了add,但它调用的还是add的方法,
构造函数
实现过程:b.call(a, arg1, agr2); b --> 传递给c使用,b方法中this指向c对象,输出c对象name值
- 参与学习 人
- 提交作业 467 份
- 解答问题 4826 个
本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星