javascript call和apply

用途:

每个函数都包含两个非继承而来的方法:call和apply.它们的用途都是在特定作用域当中调用函数,实际上等于设置了函数体内this的值。

语句块:fn.call(obj,arg1,arg2,arg3...)              fn.apply(obj,[arry]/arguments)

call和apply最强大的地方是能够扩充函数赖以运行的作用域,实际场景如下:

var name = "复读机",
    age = 25;
function say(){
    console.log("name : " + this.name);
    console.log("age : " + this.age);
}
var obj = {
    name : "bb机",
    age : 30
}
say(); //name : 复读机 age : 25 
say.call(obj);//name : bb机 age : 30 

如果我们不使用call方法,我们是怎么用obj调用say这个函数的呢

var name = "复读机",
    age = 25;
function say(){
    console.log("name : " + this.name);
    console.log("age : " + this.age);
}
var obj = {
    name : "bb机",
    age : 30
}
say(); //name : 复读机 age : 25 
obj.say = say;
obj.say();//name : bb机 age : 30

可以看出用call将会更方便!

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。