javascript call()

javascript 中call用处不少,用一句话概括就是动态改变this.比如说:

function cat(){
}
//做一个原型扩展
cat.prototype={
food:"fish",
say: function(){
alert("I love "+this.food);
}
}
var blackCat = new cat;
blackCat.say();
//当我需要一条黑狗也说它喜欢什么时:
blackDog = {food:"bone"};
//我们不想对它重新定义say方法,那么我们可以通过call用blackCat的say方法:
blackCat.say.call(blackDog);//输出I Love bone

//例子来源于知乎
call用来改变this的,改变的方式就一下几种:

1,上例子中属于继承式
2,替换式

function NameShowing(){  
    this.showName = function(){  
        document.write(this.name);  
    }  
}  

function Person(name){  
    this.name = null;  
    this.Init = function(name){    
        this.name = name;    
    }    
    this.Init(name);    
};  

var nameShowing = new NameShowing();  
var jeremy = new Person("Jeremy")  

//替换this指向 jeremy
nameShowing.showName.call(jeremy);

3,实例继承

    this.showName = function(){  
        document.write(this.name);  
    }  
}  

function Person(name){  
    this.name = null;  
    this.Init = function(name){    
        this.name = name;    
    }    
    this.Init(name);    
};  

var jeremy = new Person("Jeremy")   
NameShowing.call(jeremy);  
jeremy.showName();

2和3一个是针对方法,一个是对象,本质一样。

4,带有构造函数的参数

function Person(name, age){  
    this.name = null;  
    this.age = null;  
    this.showPersonInfo = function(){  
        document.write("Name: " + this.name + "");  
        document.write("Age: " + this.age + "");  
    };  
    this.Init = function(){  
        this.name = name;  
        this.age = age;  
    };  
    this.Init();  
}  

var jeremy = new Object();  
Person.call(jeremy, "Jeremy", 20);  
jeremy.showPersonInfo();

参考资料:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值