文章见于知乎:https://www.zhihu.com/question/20289071
如果知道call和apply的创造原因,应该就能很方便的理解它们了。
如果正常来说,创造这样一个构造函数与实例的话,是能直接使用的
function cat(){ } cat.prototype={ food:'fish', say:function(){ alert('I Love You:'+this.food); } } var blackCat=new cat; blackCat.say();
但如果让另一个实例使用say方法,那么就得让它拥有,但明显重写是不太智能的,所以就出现了call和apply
var wilteDog={ food:'bone' } blackCat.say.call(wilteDog);
这样就可以让只有food属性的wilteDog对象使用wilte的say方法
相关实例:
function arr(){ var arg = arguments; console.log([].join.call(arg,'B')); } arr('1','3')
本文深入探讨了JavaScript中call和apply方法的创造原因及其应用场景。通过实例演示如何利用这两个方法实现对象之间的方法借用,解决不同对象间方法共享的问题。
1766

被折叠的 条评论
为什么被折叠?



