Was ist der beste Weg, um sicherzustellen, dass ein jQuery-Plugin niemals eine native jQuery-Methode überschreibt?

8

Ich schreibe ein jQuery-Plugin und ich frage mich, wie ich sicherstellen kann, dass ich niemals eine zukünftige jQuery-Methode überschreiben werde.

Zum Beispiel heißt mein Plugin Foo und die Verwendung ist $('selector').foo() .

jQuery 2.6 hat die Popularität von Foo bemerkt und entschieden, dass es es in das Kernpaket aufnehmen wird. Es wird auch über $('selector').foo() verwendet.

Ich möchte nicht, dass mein Foo den nativen Foo von jQuery überschreibt (oder sonstwie kollidiert).

Das ist, was ich erfunden habe ...

%Vor%

Wäre das der beste Weg?

    
alex 28.11.2010, 09:25
quelle

4 Antworten

8

Sie können die if -Anweisungen überspringen und die Definitionsüberprüfung in Ihre Funktionsdeklaration einbauen.

%Vor%     
Adam Lassek 28.11.2010, 09:40
quelle
2

Ich denke, Sie wären besser dran mit:

%Vor%

Der Grund dafür ist, dass Ihr Plugin so aussehen könnte:

%Vor%

Die typeof die obige Funktion ist nicht , sondern ein Objekt, so dass sich die Bedingung in Ihrem Beispiel nicht wie erwartet verhält.

    
karim79 28.11.2010 09:37
quelle
0

Sie würden dies wahrscheinlich ähnlich wie bei der regulären JavaScript-Programmierung tun wollen, indem Sie eine getElementsByClassName -Funktion aktivieren - Sie prüfen, ob sie existiert und erstellen sie, falls nicht.

    
Niet the Dark Absol 28.11.2010 09:37
quelle
0

Eine etwas bessere (performance-weise) Version:

%Vor%     
Dennis 28.11.2010 21:20
quelle