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的方法,比如原型链的使用,它不属于本文,但是这里描述了调用调用的用法,当然,并应用。这两种方法基本上意味着一件事。区别在于调用的第二个参数可以是任何类型,而第二个参数必须是数组或参数。
与被调用函数调用的。
总结:
简单地说:同一点:这两种方法具有相同的效果。
不同的点:方法的参数是不同的。