


JavaScript-Syntax ist flexibel und es ist nicht ungewöhnlich, dass es fünf oder sechs Möglichkeiten gibt, dieselbe Funktion zu implementieren. In Verbindung mit einigen menschenfeindlichen Prototypenvererbungen und asynchronen Funktionen wird es noch verwirrender. Ich verstehe den Unterschied zwischen Anruf und Bewerbung oft nicht. Ich werde ihn heute aufzeichnen, um ihn nicht wieder zu vergessen.
In JavaScript können Methoden auf folgende Weise ausgeführt werden:
1.func(), dies ist die direkteste und gebräuchlichste Aufrufmethode und entspricht auch der Denklogik gewöhnlicher Menschen. In einigen Fällen weist sie jedoch einige Mängel auf, die im Folgenden erläutert werden.
2. (function(arg){})(window), anonymer Methodenaufruf, ist beim Erstellen eines Namespace nützlicher. Die Parameter in den folgenden Klammern entsprechen den Eingabeparametern in der anonymen Methode.
3.func.bind(sth)(), Mozilla-Handbuch erwähnte, dass Bind eine neue Funktion ist, die in ECMA-262 5th Edition hinzugefügt wurde und hier separat aufgeführt ist Durch die Aufrufmethode wird der Fehler ausgeglichen, dass der Bereich bei direkten Aufrufen nicht gebunden werden kann.
4.func.call(), dies ist die zweite aufrufende Methode. Die Aufrufmethode wird im Prototyp jeder Methode definiert, um die aktuelle Methode auszuführen.
5.func.apply(), Calls Zwillingsbruder.
func()
Dies ist die gebräuchlichste Aufrufmethode und kann überall in jeder Sprache gefunden werden. func(x, y) kann verschiedene Parameter übergeben. In einigen Sprachen wie PHP und Java reicht dieser Aufruf aus, um alle Probleme zu lösen. Aber JavaScript ist eine funktionale Sprache, und das Konzept des Abschlusses und ein seltsames Schlüsselwort bestimmen die Mängel dieser Aufrufmethode. Dies sollte als der Umfang des aktuellen Codesegments interpretiert werden, der sich ändert, wenn der Code in verschiedenen Segmenten ausgeführt wird. In einigen Fällen möchten wir jedoch nicht, dass sich dies ändert, z. B. bei Ereignissen, die an ein bestimmtes DOM gebunden sind Wir möchten nicht, dass dies beim Aufruf an das Fensterobjekt übertragen wird, aber manchmal ist es so, wie zum Beispiel im folgenden Code.
var a ={};
var func = function(x) {
console.log(this);
};
a.onclick = function() {
var x = 100;
func(x);
};
a.onclick();
Sie können sich a als Link auf der Seite vorstellen, anstatt sie sofort aufzurufen, und diese Methode einen Parameter hat, müssen wir eine anonyme Methode Wrap verwenden es und übergebe es an das onclick-Ereignis von a. Es gibt ein Problem. Dies wird zum globalen Objektfenster. Offensichtlich wollen wir das nicht. Zu diesem Zeitpunkt funktioniert der direkte Aufruf mit func() nicht, daher müssen wir diese externe Funktion an die Methode func binden. Es gibt also Bind-, Call- und Apply-Methoden.
binden
Der Zweck von bind ist sehr einfach: Geben Sie dieselbe Methode zurück, die an dieses Objekt gebunden ist. Durch Ändern einer Zeile des obigen Codes kann der Zweck erreicht werden, diese an ein Objekt zu binden.
var a ={};
var func = function(x) {
console.log(this);
};
a.onclick = function() {
var x = 100;
func.bind(this)(x); // hier binden
};
a.onclick();
Auf diese Weise läuft dieses Onclick-Event nicht wie eine kopflose Fliege herum.
Anrufen und bewerben
Anruf und Bewerbung sollten zusammen erwähnt werden, weil sie so ähnlich sind. Beide unterstützen mehrere Parameter, und der erste Parameter ist das Objekt, das gebunden wird. Der zweite Parameter ist der Unterschied zwischen ihnen. call verwendet unabhängige Parameter als Eingabeparameter der aufrufenden Methode und apply verwendet ein Array als Eingabeparameter . . Manchmal möchten wir dieses Objekt nicht ändern, sondern es künstlich an andere Objekte binden. Zu diesem Zeitpunkt sind Aufruf und Anwenden sehr nützlich. (Das bedeutet nicht, dass Sie bind nicht verwenden können, aber es scheint, dass bind relativ spät erschien und möglicherweise die Browserkompatibilität nicht gut ist.) Geben Sie mir ein Beispiel:
a = {
func: function() {
This.x = 1;
},
x: 0
};
b = {
a: a,
x: 20
};
for(var i = 0; i b.a.func();
}
console.log(a.x);
console.log(b.x);
Die oben genannten a- und b-Objekte haben beide x. Wir hoffen, dass func das entsprechende x gezielt ändern kann, aber direkte Aufrufe können x nur im Rahmen von func ändern, also a.x. Durch Ändern des Codes können Sie den Zweck der Änderung von b.x
erreichen
a = {
func: function() {
This.x = 1;
},
x: 0
};
b = {
a: a,
x: 20
};
for(var i = 0; i b.a.func.call(b); // binde dies an b
}
console.log(a.x);
console.log(b.x);
Diese Kastanie ist nicht gut dargestellt, etwas weit hergeholt und ein leicht verwirrender Codierungsstil. Es gibt anwendbare Szenarien, aber er ist nicht überall anwendbar.

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft
