Was bedeutet jQuery.fn?

Lesezeit: 5 Minuten

Was bedeutet jQueryfn
ajsie

Was bedeutet die fn hier meinen?

jQuery.fn.jquery

Was bedeutet jQueryfn
Christian C. Salvado

In jQuery ist die fn Eigenschaft ist nur ein Alias ​​für die prototype Eigentum.

Die jQuery Kennung (bzw $) ist nur ein Konstruktorfunktionund alle damit erstellten Instanzen erben vom Prototyp des Konstruktors.

Eine einfache Konstruktorfunktion:

function Test() {
  this.a="a";
}
Test.prototype.b = 'b';

var test = new Test(); 
test.a; // "a", own property
test.b; // "b", inherited property

Eine einfache Struktur, die der Architektur von jQuery ähnelt:

(function() {
  var foo = function(arg) { // core constructor
    // ensure to use the `new` operator
    if (!(this instanceof foo))
      return new foo(arg);
    // store an argument for this example
    this.myArg = arg;
    //..
  };

  // create `fn` alias to `prototype` property
  foo.fn = foo.prototype = {
    init: function () {/*...*/}
    //...
  };

  // expose the library
  window.foo = foo;
})();

// Extension:

foo.fn.myPlugin = function () {
  alert(this.myArg);
  return this; // return `this` for chainability
};

foo("bar").myPlugin(); // alerts "bar"

  • Stimmt das garantiert? Kann ich davon ausgehen, dass ein Aufruf von jQuery.prototype genau mit jQuery.fn identisch ist? Meine Sorge ist, wenn jQuery etwas Magie macht, wenn Sie .fn aufrufen, dann sind sie nicht austauschbar

    – Brandon

    24. Februar 2012 um 14:08 Uhr


  • Oh, mir fehlt etwas.. ‘window.foo = foo’ gibt ‘foo’ einen globalen Geltungsbereich? Das ist nie neu, ich werde das zu meiner Liste der zu lernenden Techniken hinzufügen.

    – EE33

    5. März 2012 um 19:45 Uhr

  • @EE33 Wenn ich mich nicht irre, bedeutet der globale Gültigkeitsbereich in Javascript einfach, dass Ihre Variable ein Parameter des Fensterobjekts ist.

    – Shawn

    20. September 2012 um 17:53 Uhr

  • @Imray – return this erlauben Verkettungalso könntest du tun foo("bar").myPlugin().otherPlugin()

    – Rennkaulquappe

    12. Februar 2015 um 1:44 Uhr

  • @Shawn Ich denke, es würde eine Eigenschaft genannt werden, kein Parameter, oder? Ein Parameter wäre hier die ‘a’-Variable function func1 (a) { ... }und eine Eigenschaft wäre hier die ‘a’-Variable var foo = {}; foo.a = 'a'.

    – Zach

    27. Februar 2015 um 16:00 Uhr

1645911669 141 Was bedeutet jQueryfn
Travis J

fn bezieht sich wörtlich auf die jquery prototype.

Diese Codezeile ist im Quellcode:

jQuery.fn = jQuery.prototype = {
 //list of functions available to the jQuery api
}

Aber das eigentliche Werkzeug dahinter fn ist seine Verfügbarkeit, um Ihre eigene Funktionalität in jQuery einzubinden. Denken Sie daran, dass jquery der übergeordnete Gültigkeitsbereich Ihrer Funktion sein wird this bezieht sich auf das jquery-Objekt.

$.fn.myExtension = function(){
 var currentjQueryObject = this;
 //work with currentObject
 return this;//you can include this if you would like to support chaining
};

Hier ist also ein einfaches Beispiel dafür. Nehmen wir an, ich möchte zwei Erweiterungen erstellen, eine, die einen blauen Rand setzt und den Text blau färbt, und ich möchte, dass sie verkettet sind.

jsFiddle Demo

$.fn.blueBorder = function(){
 this.each(function(){
  $(this).css("border","solid blue 2px");
 });
 return this;
};
$.fn.blueText = function(){
 this.each(function(){
  $(this).css("color","blue");
 });
 return this;
};

Jetzt können Sie diese gegen eine Klasse wie diese verwenden:

$('.blue').blueBorder().blueText();

(Ich weiß, dass dies am besten mit CSS geschieht, z. B. durch Anwenden verschiedener Klassennamen, aber denken Sie bitte daran, dass dies nur eine Demo ist, um das Konzept zu zeigen.)

Diese Antwort enthält ein gutes Beispiel für eine vollwertige Erweiterung.

  • Kannst du das nicht einfach überspringen each in deinem Beispielcode? $.fn.blueBorder = function(){ this.css("border","solid blue 2px"); return this; }; würde gut funktionieren, wie .css() iteriert bereits über die Elemente.

    – Vinczemarton

    9. Mai 2013 um 12:31 Uhr

  • @SoonDead – Das könnten Sie sicherlich, denn wenn das jQuery-Objekt eine Sammlung enthält, dann die css -Funktion iteriert sie automatisch intern mit each. Es war nur ein Beispiel, um die Unterschiede aufzuzeigen this wobei das äußere das jquery-Objekt ist und das innere auf das Element selbst verweist.

    – Travis J

    9. Mai 2013 um 18:43 Uhr

  • @SoonDead Guter Kommentar, aber ich mag es wirklich, wie Travis J die Idee / das Prinzip erklärt hat. 🙂

    – Sander

    30. Mai 2014 um 7:53 Uhr

  • Dies ist der beste Kommentar – Zu wissen, dass fn nur ein Alias ​​​​ist, ist bei weitem nicht so nützlich wie zu wissen, warum sich jemand darum kümmern sollte, und diese Antwort hat dies wunderbar demonstriert.

    – Gerard ONeill

    6. August 2015 um 19:49 Uhr

  • Nachdem ich die anderen Antworten durchgegangen war, fand ich, dass diese das Hauptkonzept leichter zu verstehen war. Danke. 🙂

    – VivekP

    10. Oktober 2019 um 6:08 Uhr

1645911669 702 Was bedeutet jQueryfn
Andi E

jQuery.fn ist eine Kurzform für definiert jQuery.prototype. Von dem Quellcode:

jQuery.fn = jQuery.prototype = {
    // ...
}

Das bedeutet jQuery.fn.jquery ist ein Alias ​​für jQuery.prototype.jquery, die die aktuelle jQuery-Version zurückgibt. Wieder von der Quellcode:

// The current version of jQuery being used
jquery: "@VERSION",

  • Ich mag diese Antwort. Ich zeige genau, wie man die Definition im Quellcode findet und dann die Definition sinnvoll interpretiert. Die gute alte Antwortmethode “lehre einen Mann das Fischen”. +1.

    – EE33

    5. März 2012 um 19:39 Uhr

  • aber welchen Zweck hat das? Nur ein paar Tastendrücke sparen?

    – schleichender

    20. Februar 2015 um 10:43 Uhr

  • @slier: ja, so ziemlich.

    – Andi E

    23. Februar 2015 um 9:00 Uhr

  • Ich wette, es gibt einen anderen Zweck. Das Anhängen einer Funktion an $.fn führt zu einer statischen Funktion

    – schleichender

    23. Februar 2015 um 18:29 Uhr

Die $.fn ist ein Alias ​​für jQuery.prototype wodurch Sie jQuery um eigene Funktionen erweitern können.

Zum Beispiel:

 $.fn.something = function{}

erlaubt Ihnen zu verwenden

$("#element").something()

Die $.fn ist auch gleichbedeutend mit jQuery.fn.

Im jQuery-Quellcode haben wir jQuery.fn = jQuery.prototype = {...} seit jQuery.prototype ist ein Objekt, dessen Wert jQuery.fn wird einfach ein Verweis auf dasselbe Objekt sein, das jQuery.prototype bereits Referenzen.

Um dies zu bestätigen, können Sie überprüfen jQuery.fn === jQuery.prototype wenn das wertet true (was es tut), dann verweisen sie auf dasselbe Objekt

868510cookie-checkWas bedeutet jQuery.fn?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy