call与apply
每个函数都包含两个非继承而来的方法:call()方法和apply()方法。
javascript权威指南上的解释是 call()、apply()可以看做是某个对象的方法,通过调用方法的形式来间接的调用函数。
var func = function(arg1, arg2) {
};
就可以通过如下方式来调用:
func.call(this, arg1, arg2);
func.apply(this, [arg1, arg2]);
call与apply相同点与不同点
相同点是这两个方法的作用是一样的,改变this的指向,继承别的函数中的实例(对象冒充),两个方法的第一个参数相同,都是this要指向的对象。
不同点在于call方法后面传入的是参数列表,参数可以是任意类型,当第一个参数为null、undefined的时候,默认指向window;apply方法的第二个参数是数组。
例子1:
例子2:
弹出三次“心想事成”