网站制作学习网JS脚本→正文:javascript call apply 使用和区别
字体:

javascript call apply 使用和区别

JS脚本 2014/12/3 22:09:58  点击:不统计


 在看javascript代码中虽然不经常看到call和apply的调用,但也要学习一下以便后用。本文介绍了call,apply的使用方法,作用和区别。

下面介绍javascript call 和apply
首先我们常见的定义函数如下
function saysitename(){
return "网站制作学习网";
}
调用 alert(saysitename());//这就输出了“网站制作学习网”的名字;
在call 和apply 使用了对象的概念,并且可以认为像java php等面向对象的特征之一 多态。
 
我们看一下call 和apply 是如何使用的
(1)call 的使用
var sitename ='网站制作学习网';
//上面定义了一个变量,该变量则是window的属性,可以通过alert(window.sitename);可以看出来
function saysitename(){
return this.sitename;
}
//我们普通调用
alert(saysitename());//输出 网站制作学习网
//我们以call方式调用saysitename.call(this);
alert(saysitename.call(this)); //输出仍然是网站制作学习网
//我们解释一下上面的代码 saysitename调用该函数,并以this对象为参数,那么this在这里可以用window是一样的。
//javascript  call 多个参数调用 function.call(obj,arg1,arg2...);
(2)apply的使用
//我们仍然使用上面的理智直接用apply代码即可saysitename.apply(this);
alert(saysitename.apply(this));
//通过上面我们可以看出apply和call基本一样
(3)javascript apply和call的区别
其实上面我们没有说到apply的多参数调用如何使用,apply和call就差异在多参数调用上
apply多参数调用,可以不一个一个写参数直接写arguments即可。
saysitename.apply(this,arguments);//这个必须在函数内部使用,因为在函数中才有arguments
//或者如下
saysitename.apply(this,[arg1,arg2....]);
 
实际例子说明apply和call的区别
 
function saysitename(){
return this.sitename;
}
function sayurl(url){
return url;
}
var b = {
sitename:'网站制作学习',
url:'http://www.forasp.cn'
}
function sayb(url){
alert(saysitename.call(b));
alert(saysitename.apply(b));
alert(sayurl.call(b,b.url));
alert(sayurl.apply(b,arguments));
}
sayb('forasp.cn');
//上面四个结果 
网站制作学习,网站制作学习,http://www.forasp.cn,forasp.cn  想想吧
以上就是Javascript call 和apply的学习
 

·上一篇:javascript callee >>    ·下一篇:javascript 判断含有某个字符 >>
推荐文章
最新文章