Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung der Verwendung von Js apply() (einschließlich Code)

亚连
Freigeben: 2018-05-18 10:05:15
Original
1322 Leute haben es durchsucht

Das Folgende ist die Verwendung von Js apply(), die ich für Sie zusammengestellt habe. Interessierte Studenten können einen Blick darauf werfen.

Ausführliche Erklärung der Js-Apply-Methode

Als ich die Javascript-Funktionen zum ersten Mal sah, waren sie sehr verschwommen und ich konnte sie nicht verstehen, was ich kürzlich gelesen habe Nachdem ich einige Beispiele für die Apply-Methode gelesen und einige Artikel aufgerufen habe, werde ich hier endlich einen Blick darauf werfen und hoffe, sie mit Ihnen teilen zu können, falls etwas nicht stimmt oder die Erklärung nicht klar ist Ich hoffe, dass die Leser mir einige Kommentare geben können, um mich gemeinsam zu verbessern.

2. Unter welchen Umständen sollte „Apply“ verwendet werden, wann sollte „Apply“ verwendet werden? Ich habe zuerst die Definitionen von apply und call im Internet nachgeschlagen und dann anhand von Beispielen die Bedeutung dieser beiden Methoden und ihre Verwendung erklärt

apply: Die Methode kann die Methode eines anderen Objekts kapern und erbt die Eigenschaften eines anderen Objekts.

Die Methode Function.apply(obj, args) kann zwei Parameter empfangen

obj: Dieses Objekt ersetzt dieses Objekt in der Funktionsklasse

args: Dies ist ein Array, das als Parameter (args--> arguments) an Function übergeben wird.

Aufruf: Die Bedeutung ist dieselbe wie bei apply, aber die Parameterliste ist anders

Function.call(obj,[param1[,param2[,…[,paramN]]] ])

obj: Dieses Objekt ersetzt dieses Objekt in der Funktionsklasse

params: Dies ist eine Parameterliste

1.apply示例:  
<script type="text/javascript">   
/*定义一个人类*/   
function Person(name,age) {   
    this.name=name; this.age=age;   
}   
 /*定义一个学生类*/   
functionStudent(name,age,grade) {   
    Person.apply(this,arguments); this.grade=grade;   
}   
//创建一个学生类   
var student=new Student("qian",21,"一年级");   
//测试   
alert("name:"+student.name+"\n"+"age:"+student.age+"\n"+"grade:"+student.grade);   
//大家可以看到测试结果name:qian age:21 grade:一年级   
//学生类里面我没有给name和age属性赋值啊,为什么又存在这两个属性的值呢,这个就是apply的神奇之处.   
</script>
Nach dem Login kopieren

Analyse: Person.apply(this,arguments);

this: Beim Erstellen eines Objekts stellt es den Schüler zu diesem Zeitpunkt dar

arguments:是一个数组,也就是[“qian”,”21”,”一年级”];
Nach dem Login kopieren

Mit anderen Worten, für Laien ausgedrückt: Verwenden Sie student, um den Inhalt in der Person-Klasse auszuführen, und dieser existiert in der Person-Klasse .name usw., wodurch die Attribute im Student-Objekt erstellt werden

2.call Beispiel

In der Student-Funktion können Sie die Funktion „Anwenden“ wie folgt ändern:

rrree

Das ist in Ordnung

3. Wann sollte „Anwenden“ und wann „Aufruf“ verwendet werden? 🎜>

Im Fall der Angabe von Objektparametern, wenn der Parameter in Form eines Arrays vorliegt, z. B. apply Die Parameterargumente werden im Beispiel übergeben. Dieser Parameter ist vom Array-Typ und die Liste der Parameter ist konsistent beim Aufrufen von Person (das heißt, die ersten beiden Ziffern der Parameterlisten von Person und Student sind konsistent). Wenn die Parameterliste meiner Person wie folgt lautet (Alter, Name) und die Parameterliste des Schülers (Name,) lautet. Alter, Klasse), sodass es mit Aufruf implementiert werden kann, d . Einige andere clevere Verwendungen von apply

Aufmerksame Leute haben vielleicht bemerkt, dass der erste Parameter ein Objekt (this) und der zweite Parameter eine Array-Sammlung ist

Wenn Person aufgerufen wird, benötigt er kein Array, aber warum hat er mir ein Array gegeben? Ich kann das Array trotzdem in einen Array-Parameter analysieren.

Dies ist eine clevere Verwendung von apply. Es kann standardmäßig ein Array in eine Parameterliste konvertieren ([param1, param2, param3] wird in param1, param2, param3 konvertiert). Liste der Parameter. Mit Hilfe dieser Funktion von apply haben wir die folgende effiziente Methode:

a) Math.max kann das größte Element im Array erreichen

, da Math.max Der Parameter unterstützt Math.max([param1, param2]) nicht, das Array

, aber Math.max(param1, param2, param3...), sodass Sie es basierend auf lösen können Eigenschaften von apply gerade jetzt var max=Math.max.apply(null, array), sodass Sie leicht das größte Element in einem Array erhalten können

(apply konvertiert ein Array in einen Parameter und übergibt ihn an die Methode einen Parameter nach dem anderen)

这块在调用的时候第一个参数给了一个null,这个是因为没有对象去调用这个方法,我只需要用这个方法帮我运算,得到返回的结果就行,.所以直接传递了一个null过去

b)Math.min 可以实现得到数组中最小的一项

同样和 max是一个思想 var min=Math.min.apply(null,array);

c)Array.prototype.push 可以实现两个数组合并

同样push方法没有提供push一个数组,但是它提供了push(param1,param,…paramN) 所以同样也可以通过apply来装换一下这个数组,即:

vararr1=new Array("1","2","3");   
 vararr2=new Array("4","5","6");   
Array.prototype.push.apply(arr1,arr2);
Nach dem Login kopieren

也可以这样理解,arr1调用了push方法,参数是通过apply将数组装换为参数列表的集合.  

通常在什么情况下,可以使用apply类似Math.min等之类的特殊用法:  

一般在目标函数只需要n个参数列表,而不接收一个数组的形式([param1[,param2[,…[,paramN]]]]),可以通过apply的方式巧妙地解决这个问题!  

5.总结:  

一开始我对apply 非常的不懂,最后多看了几遍,自己多敲了几遍代码,才明白了中间的道理,所以,不管做什么事情,只要自己肯动脑子,肯动手敲代码,这样一个技术就会掌握…     

还有比如第四部分得内容,巧妙的解决了实实在在存在的问题,这个肯定不是一个初学者能想到的解决方案(这个也不是我自己想的),没有对编程有一定认识的不会想到这个的,还是一句话,多积累,多学习,提升自己的能力和对编程思想的理解能力才是最关键!  

上面是我整理给大家的Js apply()使用,希望今后会对大家有帮助。

相关文章:

简单易懂,javascript自学学习笔记

在页面自动执行(加载)js的几种解决方法,详细代码解析

利用js 来判断客户端能否上网(代码附上)

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung von Js apply() (einschließlich Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage