两者作用一致,都是把obj(即this)绑定到thisObj,这时候thisObj具备了obj的属性和方法。或者说thisObj『继承』了obj的属性和方法。
唯一区别是apply接受的是数组参数,call接受的是连续参数。
1 function add(j, k){ 2 return j+k; 3 } 4 5 function sub(j, k){ 6 return j-k; 7 }
1 add(5,3); //8 2 add.call(sub, 5, 3); //8 3 add.apply(sub, [5, 3]); //8 4 5 sub(5, 3); //2 6 sub.call(add, 5, 3); //2 7 sub.apply(add, [5, 3]); //2
下面说一下关于call和apply的对象继承的用法:
1 var parent = function(){ 2 this.name = "chen", 3 this.age = 23 4 }; 5 var child = {}; 6 console.log(child); //Object{} 空对象 7 8 parent.call(child); 9 console.log(child); //Object {name: "chen", age: 23}
原文:http://www.cnblogs.com/colaman/p/6266572.html