论坛首页 Web前端技术论坛

javascript函数的call方法

浏览 19821 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-06-13  
想请问一下javascript中函数的call方法怎么用。在犀牛书里面作者提到过,不是很明白。哪位能够指点一下,call怎么用,在开发javascript时候有什么用。多谢了!
   发表时间:2006-06-14  
call方法可改变上下文this指针,类似的方法还有apply,只是调用方式上有些不同

call 方法
调用一个对象的一个方法,以另一个对象替换当前对象。

call([thisObj[,arg1[, arg2[,   [,.argN]]]]])

参数
thisObj

可选项。将被用作当前对象的对象。

arg1, arg2,  , argN

可选项。将被传递方法参数序列。

说明
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。

如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。


主要用在js对象各方法互相调用的时候,使当前this实例指针保持一致,或在特殊情况下需要改变this指针
0 请登录后投票
   发表时间:2006-06-14  
大概明白了, 多谢了.
给个例子, 从 mozilla上面操来的.
function product(name, value);{
   this.name = name;
   if(value > 1000);
      this.value = 999;
   else
      this.value = value;
}

function prod_dept(name, value, dept);{
   this.dept = dept;
   product.call(this, name, value);;
}

prod_dept.prototype = new product();;

// since 5 is less than 100 value is set
cheese = new prod_dept("feta", 5, "food");;

// since 5000 is above 1000, value will be 999
car = new prod_dept("honda", 5000, "auto");;
0 请登录后投票
   发表时间:2006-09-05  
看了半天,终于明白了。
就是相当于调用call的主体类拥有了被调用call的类的所有公有域,相当于公有继承的实现。对吧?
0 请登录后投票
   发表时间:2006-09-14  
yangylsky 写道
看了半天,终于明白了。
就是相当于调用call的主体类拥有了被调用call的类的所有公有域,相当于公有继承的实现。对吧?


其实call和apply就是用来实现面向对象中继承的。
0 请登录后投票
   发表时间:2006-09-15  
zhython 写道
大概明白了, 多谢了.
给个例子, 从 mozilla上面操来的.
function product(name, value){
   this.name = name;
   if(value > 1000)
      this.value = 999;
   else
      this.value = value;
}

function prod_dept(name, value, dept){
   this.dept = dept;
   product.call(this, name, value);
}

prod_dept.prototype = new product();

// since 5 is less than 100 value is set
cheese = new prod_dept("feta", 5, "food");

// since 5000 is above 1000, value will be 999
car = new prod_dept("honda", 5000, "auto");


我不认为这个例子好.
prorotype.js 看看  bind方法
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics