Der Grund für die Referenz von html()
nicht in Ihrem Beispiel nicht funktioniert, weil der Umfang der this
hat innerhalb der Funktion geändert, wenn Sie es nennen.
Im normalen Beispiel (z. B. $('#bar').html('Hello.')
) bezieht sich this
auf die DOMElements, die im jQuery-Objekt enthalten sind.
In der Funktionsreferenz wurde die Version this
geändert, um auf window
zu zeigen. Um dies zu beheben, müssen Sie die html()
Methodenreferenz aufrufen, die den Bereich this
mit call()
angibt. Wie Sie aus dem folgenden Beispiel sehen können, ist dies nicht sehr hilfreich, da Sie das DOM dann zweimal aufrufen müssen, um das #bar
Element abzurufen.
var foo = $("#bar").html;
foo.call($("#bar"), "Hello.");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="bar"></div>
bind()
würde auch das gleiche Ergebnis erreichen, und haben genau die gleichen Nachteil.
Ich denke, der zweite Aufruf wird im Bereich 'window' laufen –
Wahrscheinlich, weil Aufruf von [' .html (htmlString) '] (http://api.jquery.com/html/#html2) und Übergabe eines Wertes zurückgibt [ 'jQuery'] (http://api.jquery.com/html/) (eine Instanz des jQuery-Objekts), wie in den Dokumenten angegeben. Wenn Sie die Funktionsreferenz speichern, kann die Objektreferenz verloren gehen. Nur eine Vermutung. – War10ck