先看一段代码
function cat() {} cat.prototype={food:'fish',say:function () {console.log('I love '+this.food);} };var blackCat = new cat(); blackCat.say();
这时,控制台输出 I love fish
若此时,有另一个对象
Dog={food:'bones and shit'};
dog对象没有say方法,这时我们可以这样写
blackCat.say.call(Dog);
此时,控制台输出 I love bones and shit
总的来说,就是将前者绑定到call中的对象,让call中的对象具备前者的方法和属性,或者说是继承。
obj.call(thisObj,arg1,arg2,...);
obj.apply(thisObj,[arg1,arg2,...]);
apply与call作用一样,只是参数不同,call接受连续参数,apply接受数组参数。
记住JavaScript里面一切皆对象