电脑百科:带你玩转call和apply
带你玩转call和apply方法
在ECMAScript v3中,给Function原型定义了这两个方法,这两个方法的作用都是一样的:使用这两个方法可以像调用其他对象方法一样调用函数,这句话是从书上抄的,至少我是没读明白这是什么意思。
下面说简单易懂的,先看段代码:
复制代码 代码如下:
function Introduce(name,age)
{
e("My name is "+name+".I am "+age);
}
var p=new People();
(p,"Windking",20);
就说上面的这段代码,用了call之后,Introduce就成了p的方法,不知道这样说你明白了么?使用了call方法,上述的`代码就等同于了这个代码:
复制代码 代码如下:
function People(name,age)
{
=name;
=age;
oduce=function(){
e("My name is "+name+".I am "+age);
};
}
明白意思了么?apply也是一样的作用。
好,我们不管这个方法到底能在实际中用到什么,先讲语法。
call接受至少一个参数,call的第一个参数是指你所需要的对象,比如说上面的那个例子,Introduce方法希望他能够被对象p所调用,那么就把p作为call的第一个参数。剩余的参数个数是任意的,作用是作为Introduce方法的参数。顺序按照Introduce参数声明的顺序。比如(p,"Windking",20),假如Introduce是p的一个实例方法,那么也就是这样的:oduce("Windking",20)。明白了么?记住,传入参数的顺序要与函数声明参数的顺序保持一致。
了解了call,apply方法就容易理解了,apply和call唯一的区别是call接受至少一个参数,而apply只接受两个参数,第一个参数与call一样,第二个参数是一个带下标的集合,比如说(p,"Windking",20)就可以改写成y(p,["Windking",20])了。这次明白了么?
那究竟这两个方法有什么用呢?如果我们只是为了实现上面的那个功能,把Introduce实现为People的方法不是更好么?
我把应用总结为两条:
1.共享方法。先看代码:
复制代码 代码如下:
function Introduce(name,age)
{
e("My name is "+name+".I am "+age);
}
这是一个自我介绍的方法,现在假设我们有一个男孩的类,和一个女孩的类(在这里我只是为了演示,在实际中,会用一个People的父类),因为他们的Introduce都是一样的,于是我们就可以共享这个方法。
复制代码 代码如下:
function Boy()
{
ntroduce=function(){
(this,name,age);
};
}
同理,Girl中也是一样,这样的话,我们就可以避免写代码了。其实这个有些牵强,因为我们完全也可以写成:
复制代码 代码如下:
function Boy()
{
ntroduce=function(){
Introduce(name,age);
}
}
但是这个时候,我们如果用Apply的话,就看上去简单多了:
复制代码 代码如下:
function Boy()
{
ntroduce=function(){
y(this,arguments);
};
}
是不是简单了很多呢?如果参数很多的话,那么是不是不用再写那么一场串密密麻麻的参数了呢!
2.跨域调用
看一个简单的例子(仅为演示,无任何价值):
复制代码 代码如下:
function Boy(name,age)
{
ntroduce=function(){
e("My name is "+name+".I am "+age);
}
}
function Girl(name,age)
{
}
这是一个Boy和一个Girl类,然后我们写如下的代码:
var b=new Boy("Windking",20);
ntroduce();
这没有任何异议。假设有一天有一个女孩也希望做一下自我介绍,只是偶然用一下,那么我就没有必要修改Girl类,因为其他的女孩比较害羞,不喜欢自我介绍。那么这个时候我就可以这样。
var g=new Girl("Xuan",22);
(g,"Xuan",22);
3.真正用处——继承
好了,上面都是雕虫小技,不登大雅之堂,下面才是call和apply最广泛的应用,就是用于构造继承。
-
电脑常见问题合集汇总【15篇】
电脑常见问题合集11【病毒感染】病毒可以使计算机工作效率急剧下降,造成频繁死机或电脑蓝屏。这时,我们需用杀毒软件如KV300、金山毒霸、瑞星等来进行全面查毒、杀毒,并做到定时升级杀毒软件。2【CMOS设置不当】该故障现象很普遍,如硬盘参数设置、模式设置、内存参...
-
电脑租赁合同优选[13篇]
随着法治精神地不断发扬,人们愈发重视合同,合同起到的作用越来越大,签订合同可以明确双方当事人的权利和义务。你知道合同的主要内容是什么吗?以下是小编帮大家整理的电脑租赁合同,仅供参考,希望能够帮助到大家。电脑租赁合同篇1出租方:__________________(以下简称甲...
-
学习电脑心得体会12篇【优】
我们心里有一些收获后,常常可以将它们写成一篇心得体会,这样能够给人努力向前的动力。那么如何写心得体会才能更有感染力呢?下面是小编为大家收集的学习电脑心得体会,欢迎大家分享。学习电脑心得体会1参加电脑学习班前,也和一般人的认识差不多,认为老年人中学电脑的...
-
推销手机电脑的话
1、三合一,超无敌——笔电锋。2、笔电锋,领先一步的科技。3、“芯”随我动,一机三用。4、生活多一‘电’,美好更如意。5、笔电锋,通话上网好轻松。6、智能笔电锋,精彩全掌控。7、生活全方位,多能笔电锋。8、锋芒“笔”露,魅力之路。9、有科技,有世界——笔电锋。10、笔...