js中的call()方法理解和使用

官方对call()使用格式是:obj1.call(obj2,arg0,arg1,arg2...);

官方对它的解释是:调用一个对象的方法,以另外一个对象替换当前对象;对应上面的式子就是,obj1对象替换obj2对象,然后再调用以(arg0, arg1, arg2...)为参数的方法。


官方的标准:

call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 
参数 
thisObj 
可选项。将被用作当前对象的对象。 
arg1, arg2, , argN 
可选项。将被传递方法参数序列。 
说明 
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 

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

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

举个网上常用的例子:

function add(a,b){
    alert(a+b);
}
function sub(){
    alert(a - b);
}

add.call(sub, 3, 1);
//add替代sub对象,add.call(sub, 3, 1) == add(3,1)就是add(3, 1),结果是alert(4)
// 注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。 


举一个复杂的地址:
Shape.js

function Shape(){
    this._name = "shape";
    this.setName1 = function(name){
        this._name = name;
    }
    this.getName1 = function(){
        return this._name;
    }
}
Rect.js

function Rect() {
    this.width = 10;
    this.height = 10;
    function getWidth(){
        return this.width;
    }
    function setWidth(width){
        this.width = width;
    }

    function getHeight(){
        return this.height;
    }

    function setHeight(height){
        this.height = height;
    }

    Shape.call(this);
}
app.js

var shape = new Shape();
shape._name = "nihao";
//alert(shape._name);//结果是"nihao"
var rect = new Rect();
rect._name = "rect";
alert(rect._name);//结果是"rect"
//alert(Shape._name);//结果是undefined
//alert(rect.getName1());//如果不加括号那么弹出来的就是getName1的代码,而不是结果

实际上就实现了Rect继承了Shape

写的比较好的博客:

http://www.cnblogs.com/sweting/archive/2009/12/21/1629204.html

http://www.cnblogs.com/frostbelt/archive/2012/04/01/2428014.html


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值