转载:http://www.codesky.net/article/201004/100030.html
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
apply、call的区别:参数不一样,apply是数组参数,call是普通的参数。
例子:
var func=new function(){this.a="func"}
var myfunc=function(x,y){
var a="myfunc";
alert(this.a);
alert(x + y);
}
myfunc.call(func,"var"," fun");// "func" "var fun"
myfunc.apply(func,["var"," fun"]);// "func" "var fun"
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
caller、callee的区别:caller的方法的执行者,callee则是被调用的方法。
caller 属性只有在函数执行时才有定义。使用方法是:方法名.caller
如:
var sum = function(){
alert(sum.caller);
};
function t(){
sum();
}
t();//弹出调用sum方法的那个方法,就是t方法
callee 属性的初始值就是正被执行的 Function 对象。
callee 属性是 arguments 对象的一个成员
function test(){
alert(arguments.callee);
}
test();//弹出函数本身 结果与test.toString()一样
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------