Javascript中调用()和应用()方法的示例分析

1、方法定义

呼叫的方法:

语法:电话(thisobj { { { {,arg1,arg2,{,argn }}}}}。)

定义:调用对象并用另一个对象替换当前对象的一种方法。

解释uff1a

调用方法可以用来代替另一个对象调用方法时,调用的方法可以改变一个函数对象上下文从初始上下文的thisobj指定新的对象。

如果没有提供thisobj参数,则全局对象作为thisobj。

申请方法:

语法:申请({ thisobj argarray } {,})

定义:应用一个对象并用另一个对象替换当前对象的一种方法。

解释uff1a

如果argarray不是有效的阵列或争论的对象,然后将引发TypeError。

如果对argarray和thisobj参数没有设置,那么全球目标将作为thisobj不能传递任何参数。

2。常见的例子

一个,

复制代码代码如下所示:

函数添加(a,b)

{

警报(A + B);

}

函数子(a,b)

{

警报(A-B);

}

add.call(子,3,1);



这个例子的意思是使用添加替换子,add.call(子,3,1)=加(3,1),所以操作结果:报警(4); / /注:js函数是对象,函数名是指一个函数对象。

B,

复制代码代码如下所示:

函数动物(){

this.name =动物;

this.showname =函数(){

警报(这个名字);

}

}

函数猫(){

this.name =猫;

}

动物=新动物();

新的猫();

通过电话或申请/ showName方法,原本属于对象(动物)的方法对猫对象使用。

猫输入/输出的结果

animal.showname.call(猫,

/ / animal.showname.apply(猫,{ });



打电话的意思是把动物的方法放在猫身上。原来,猫没有showName()方法。现在是要把动物的showName()方法对猫,所以this.name应该是猫。

c和继承的实现

复制代码代码如下所示:

功能动物(名称){

this.name =名称;

this.showname =函数(){

警报(这个名字);

}

}

函数猫(名称){

Animal.call(这名字);

}

var =新的猫(黑猫);

Cat.showName();



Animal.call(这)意味着动物的物体代替这个对象。那么猫就没有动物的属性和方法了。猫对象可以直接调用动物的方法和属性。

d,多重继承

复制代码代码如下所示:

10()函数

{

this.showsub =功能(A,B)

{

警报(A-B);

}

}

11班()函数

{

this.showadd =功能(A,B)

{

警报(A + B);

}

}

2()函数

{

class10.call(本);

class11.call(本);

}



用两个调用实现多重继承是很容易的。

当然,还有其他继承JS的方法,比如原型链的使用,它不属于本文,但是这里描述了调用调用的用法,当然,并应用。这两种方法基本上意味着一件事。区别在于调用的第二个参数可以是任何类型,而第二个参数必须是数组或参数。

与被调用函数调用的。

总结:

简单地说:同一点:这两种方法具有相同的效果。

不同的点:方法的参数是不同的。