浏览 19820 次
锁定老帖子 主题:javascript函数的call方法
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-06-13
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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指针 |
|
返回顶楼 | |
发表时间: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");; |
|
返回顶楼 | |
发表时间:2006-09-05
看了半天,终于明白了。
就是相当于调用call的主体类拥有了被调用call的类的所有公有域,相当于公有继承的实现。对吧? |
|
返回顶楼 | |
发表时间:2006-09-14
yangylsky 写道 看了半天,终于明白了。
就是相当于调用call的主体类拥有了被调用call的类的所有公有域,相当于公有继承的实现。对吧? 其实call和apply就是用来实现面向对象中继承的。 |
|
返回顶楼 | |
发表时间: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方法 |
|
返回顶楼 | |