当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JS教程:call、apply、callee用法

Javascript
手把手教你做超酷的条形码效果
pjblog中的UBBCode.js
一个跟随鼠标的图片放大效果,与FF兼容
学习jquery之一
javascript英文日期(有时间)选择器
几行代码轻松搞定jquery实现flash8类似的连接效果
搜集了几个不错的下拉菜单效果
无间断滚动的新闻文章列表,兼容IE、Firefox和Opera,符合W3C标准。可作Marquee
一个js实现的所谓的滑动门
OfflineSave离线保存代码再次发布使用说明
css静态滤镜 + A:Hover 效果
js+ajax实现的A*游戏路径算法整理
JSON 学习之完全手册 图文
Javascript & DHTML 实例编程(教程)(四)初级实例篇2—动画
jQuery基础学习技巧总结
jQuery 中关于CSS操作部分使用说明
经常用的图片在容器中的水平垂直居中实例
比较不错的一款图片广告效果
用javascript实现的汉字简繁转换
javascript实现的文字加密解密

Javascript 中的 JS教程:call、apply、callee用法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 292 ::
收藏到网摘: n/a

可能不少学习javascript在使用call,apply,callee时会感到困惑,以下希望对于你有所帮助:

1、它是函数的方法或属性;
2、它可以改变执行上下文的this指向;
3、作为另一个对象调用一个方法(即可以把一个对象的方法作为另一个对象的方法来引用);
4、apply方法类似,但只能接收数组为参数;
5、callee函数的调用者。

f.call(o,1,2) 等同于
o.m = f;
o.m(1,2);

例1:
function o1(value){
if(value < 100){
this.value = value;
}else{
this.value = 100;
}
}

function o2(value){
o1.call(this,value);
alert(this.value);
}

var o = new o2(133554) //100  改变了this的指向

例2:
function c1(){
this.m1 = function(){
alert(this.name);
}
}

function c2(){
this.name = “mike”;
}
var nc1 = new c1();
var nc2 = new c2(); //必须
nc1.m1.call(nc2);  //mike 把方法m1作为对象nc2的方法来引用

例3:
function o1(arg){
if (arguments[1] < 100) {
this.value =
arguments[1] ;
}
else {
this.value = 100;
}
}

function o2(arg){
o1.apply(this, arg);
alert(this.value);
}

var o = new o2([101,60]) //60 参数只能是数组

callee用法,常用于匿名函数中
var factorial = function(x){
if(x <= 1){
return 1;
}
return x * arguments.callee(x - 1);
}
alert(factorial(5)); //120