实例学习call、apply、callee用法

作者:mike 来源:163 UED Team 时间:2009-03-27 17:56:00 

可能不少学习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:

if (arguments[1] < 100) {
this.value = }
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

标签:实例,call,apply,callee,用法
0
投稿

猜你喜欢

  • asp的系统变量ServerVariables (“HTTP_USER_AGENT“)问题

    2009-02-04 15:51:00
  • MYSQL教程:索引和查询优化程序

    2009-02-27 15:52:00
  • 功能强大,代码简单的管理菜单

    2008-07-11 16:52:00
  • HTML标签tbody的用法

    2009-11-02 10:11:00
  • web开发以HTML为中心

    2008-02-13 08:14:00
  • Dreamweaver MX弹出窗口全攻略

    2010-09-05 21:14:00
  • 条件CSS的使用[译]

    2009-03-12 12:23:00
  • MIME Type 引出的两难困境

    2011-06-14 09:45:41
  • 教你怎么使用sql游标实例分享

    2012-07-11 16:14:57
  • 页面重构中的模块化思维

    2009-06-28 15:36:00
  • 解决MySQL启动时1067错误

    2010-09-30 14:09:00
  • HTML5 Canvas 起步(2) - 路径

    2009-05-12 12:06:00
  • asp中记录集对象的getrows和getstring用法分析

    2012-11-30 20:09:49
  • 在SQL Server中编写通用数据访问方法

    2009-01-20 11:35:00
  • CSS关于Border你可能会不注意的东西

    2007-10-20 13:50:00
  • oracle 分页 很棒的sql语句

    2009-07-02 11:44:00
  • 标准的、语义的、Unobtrusive的页签tab切换

    2007-11-03 13:58:00
  • 也谈网页圆角的背景图法

    2009-03-19 14:09:00
  • 彻底终结浏览器Cache页面的解决方案

    2008-04-21 15:10:00
  • 浅谈Javascript中的事件流和事件绑定

    2009-07-20 17:13:00
  • asp之家 网络编程 m.aspxhome.com