Was ist der beste Weg, um statische Variablen für jQuery-Plugins zu erstellen?Statische Variablen a jQuery Plugins; Wie erstellt man?
Ich habe 2 Beispiel-Anwendungsfälle, um mein Denken so weit zu veranschaulichen; jeder mit ein paar Ideen.
Andere Ideen natürlich willkommen ...
Ein Beispiel ist für eine statische Variable, die enthält: Animationseinstellungen, Layouteinstellungen, Produktdetails usw .; der andere für eine statische Variable Caching-Daten.
Ich hoffe 'statisch' ist die richtige Terminologie hier ... single globals. Bitte korrigieren Sie wenn falsch.
Fall 1: für Einstellungen
// defining globally
var anObject = {
value1 = 0;
value2 = 0;
}
jQuery.anObjectSet(partialObject) {
anObject = jQuery.extend(anObject, partialObject);
}
jQuery.fn.myPlugin = function (partialObject) {
obj = jQuery.extend(anObject, partialObject);
}
oder vielleicht?
// adding to the jQuery object
jQuery.anObject = {
value1 = 0;
value2 = 0;
}
jQuery.anObjectSet(partialObject) {
jQuery.anObject = jQuery.extend(jQuery.anObject, partialObject);
}
jQuery.fn.myPlugin = function (partialObject) {
obj = jQuery.extend(jQuery.anObject, partialObject);
}
oder vielleicht?
jQuery.anObjectSet(partialObject) {
if(!jQuery.anObject)
jQuery.anObject = {
value1 = 0;
value2 = 0;
}
jQuery.anObject = jQuery.extend(jQuery.anObject, partialObject);
}
jQuery.fn.myPlugin = function (partialObject) {
if(!jQuery.anObject)
jQuery.anObject = {
value1 = 0;
value2 = 0;
}
obj = jQuery.extend(jQuery.anObject, partialObject);
}
Fall 2: für das Caching
jQuery.fn.myPlugin = function (newObject) {
if(!cache[newObject])
cache[newObject] = $(newObject);
return cache[newObject];
}
oder vielleicht? (Ich habe diese Methode woanders gesehen)
window.$cache = {};
jQuery.fn.myPlugin = function (newObject) {
if(!$cache[newObject])
$cache[newObject] = $(newObject);
return $cache[newObject];
}
Danke. Ich möchte eine .js-Bibliothek aufbauen, die auf dem richtigen Weg beginnt ...
ps, gibt es einen "Plugin Development" Abschnitt @ http: //docs.jquery.com/Tutorials, wenn du mehr lesen willst :-) – Seaux
das ist großartig ~ eine frage: ich erstelle ein anderes plugin mit dieser technik woanders. es ist in einer anonymen Funktion verpackt, wie oben empfohlen. Wird es Zugriff auf $ cache haben? Oder müsste die Funktion des Plugins in derselben anonymen Funktion enthalten sein? weg zu testen ... – Ross
@Danny danke für den Schnitt. brillant. +1 erneut, wenn nur möglich. – Ross