深刻理解javascript中的应用程序()和调用()方法之间的区别

如果没有接触动态语言,编译语言的思维模式对javascript的理解就会有一种神奇而奇怪的感觉,因为意识往往是不可能发生的事情,即使javascript在学校。不会听这个自由多变的语言在这种情感的过程中所遇到的原因,然后从现在-首先,请放下你的偏见,因为这对你绝对是一个新大陆,让javascrip慢慢融化前凝固的规划意识,注入新的活力!

嗯,好的,了解动态特性javascrtipt变换运行时上下文,此功能主要体现在应用,通过调用方法。

区分应用,调用是一个词,

foo.call(arg1,arg2,这foo.apply ARG3)=(这个参数)= = this.foo(arg1,arg2,ARG3)



电话,一种将属于Function.prototype,它是Javascript引擎的内部实现,因为属于Function.prototype,所以每个函数对象实例,其中每个方法调用,应用性能。作为方法的属性,它们的使用当然是针对这两种方法的。这种方法很容易混淆,因为它们的工作方式相同,只是使用不同的方式。

同样的观点:这两种方法具有相同的效果。

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

那么这个方法的效果是什么方法传递的参数是什么

我们扩大对foo.call分析(arg1,arg2这样,ARG3)以上。

foo是一个方法,这是上下文对象,该方法执行arg1,arg2,ARG3是一个参数传递给foo方法。这种方法执行一个所谓的上下文对象,如果有一个基于面向对象的编程,它很容易理解,是在类实例化之类的。

在Javascript中,代码总是有一个上下文对象,它由代码处理。上下文对象由这个变量表示。这个变量总是指向当前代码中的对象。

为了更好地理解这是什么,例如。


创建一个类
函数A(){
类实例化将运行以下代码
这是执行上下文的对象,这是对象的当前实例。
一个this.message =消息;
this.getmessage =函数(){
返回this.message;
}
}
创建一个类实例
var =新的a();
叫/类实例GetMessage方法获取信息的价值
警报(a.getmessage());
创建一个B类
函数B(){
B this.message =消息;
this.setmessage =功能(MSG){
this.message =味精;
}
}
创建一个B类对象的实例
var =新的b();


可以看出,A、B类都有一种信息属性(对象的成员),一个已经得到消息,GetMessage方法,B有设置消息的setmessage方法,下一个是显示呼叫的力量。




/ /对象的动态分配方法setmessage,B,本身是不一样的!
b.setmessage.call(消息来自一个、一个);
该消息将显示在下面
警报(a.getmessage());
/ /对象B的动态分配方法GetMessage,B本身是不一样的!


这是动态语言Javascript调用的力量!

几乎没什么了。对象的方式可以任意分配,对象本身从来没有中断过。注意分配。最流行的一点是,该方法是通过调用另一个对象来完成任务,原则上,在执行方法时,上下文对象将被更改。

因此,b.setmessage.call(A、信息)相当于使用一个执行B对象在执行上下文对象的setmessage方法,这是不是在过程B,和功能相当于a.setmessage(消息)。

因为应用程序和调用的作用是相同的,所以可以说

调用,应用的作用是调用别人的方式,就像它调用自己一样。

好了,了解通话,应用相同的地方-效果后,看看差异,并看到上面的例子,我相信你可能知道。

从b.setmessage.call(A、信息)相当于a.setmessage(的消息),可以看出,一个消息在调用参数传递,

那么它在应用中意味着什么呢。我们正在设计一个应用场景:


函数打印(a,b,c,d){
警报(A + C + C + D);
}
函数示例(a、b、c、d){
使用打印/显式参数调用。
print.call(,,B,C,D);
将打印应用程序作为参数数组应用,
下面是在一些中直接使用Javascript参数数组本身的方法
Print.apply(这个参数);
或封装到数组中
Print.apply(,{ A,B,C,D });
}
下面将显示背光/脚本
例子(背,轻,脚,本);


在这个场景中,示例方法a、b、c、d作为方法传递的参数,使用应用程序,分别调用调用打印方法。

最后一句是由于直接调用示例方法,因此上下文对象在这个方法中是窗口对象。

因此,调用、应用方法,除了第一个参数,即执行上下文对象是相同的,调用方法的其他参数将依次作为参数传递给借用的方法,而应用程序有两个参数和第二个参数是由数组传递的。

调用与应用之间的区别是,从第二个参数中,调用方法参数将依次传递给被借用的方法,应用程序将直接将这些参数放入数组中,然后传递它们。最后,借用方法的参数列表是相同的。



应用场景:

参数清晰时调用,当参数不明确时可以应用参数。



print.call(窗口,背光,脚,本);
参数可能是多个。
函数(){
print.apply(窗口参数);
}


上述理解是对之间的应用差异()和()方法调用Javascript,这是萧边分享你的全部内容。我希望能给你一个参考,希望你能支持它。