方法定义

呼叫的方法:

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

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

解释uff1a

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

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

申请方法:

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

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

解释uff1a

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

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



常见的例子

一个,




函数添加(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的方法,比如原型链的使用,它不属于本文,但是这里描述了调用调用的用法,当然,并应用。这两种方法基本上意味着一件事。区别在于调用的第二个参数可以是任何类型,而第二个参数必须是数组或参数。

Javascript中的调用和应用方法是用来改变函数对象的上下文,即函数中指向的内容。

调用的方法如下所示:


fun.call(obj1,arg1,arg2,…);
Fun.apply(obj2,{ ARRS });




具体的例子:


var obj1 = { {
名称:'object1,
表示:函数(P1,P2){
console.log(this.name + + + +表示P1,P2);
}
};

发生说OD早上 / /日志
Obj1.say ('od','morning');

var obj2 = { {
名称:'object2
};

object2说OD下午 / /日志
obj1.say.call(obj2,'od ','afternoon);

说下午再OD object2 / /日志
obj1.say.apply(obj2,{ 'od ','afternoon再次});




这个例子可以看出,当打电话说在一个传统的方式,这在方法分obj1,当这是通过电话申请,这一点,obj2。

从示例中可以看到,调用和应用程序的作用完全相同,调用方法的不同之处在于参数列表中的差异。