现在的位置: 首页 > 综合 > 正文

js apply/call/caller/callee/bind使用方法与区别分析

2013年03月23日 ⁄ 综合 ⁄ 共 1354字 ⁄ 字号 评论关闭

转载: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()一样

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

抱歉!评论已关闭.