Hey,
J'ai pas des masses de temps et suis pas sûr d'avoir tout saisi, mais si tu veux juste singletoniser ton truc, pourquoi passer ton plugin entier à $.data ?
/**
* jQuery plugin wrapper
*/
$.fn[ pluginName ] = function( options ) {
return this.each( function() {
var _oPlugin;
if ( $.data( this, 'plugin_' + pluginName ) !== true ) {
_oPlugin = new Plugin( this, options );
$.data( this, 'plugin_' + pluginName, true );
}
} );
};
Bon, c'est à la grosse louche et je suis concentré sur un truc qui n'a rien du tout à voir, donc si j'ai tapé à côté de la plaque, ce serait même pas étonnant... mais tel que c'est là dans ton code, en laissant une référence à ton plugin directement dans $.data, oui, tes méthodes sont publiquement accessibles.
Alors soit tu passes par ma méthode, soit tu fais en sorte que tes méthodes soient privées en ne les liant pas au prototype, mais ça implique une réécriture en profondeur du plugin...
Ceci étant, ma méthode a pitêt besoin de t'obliger à garder une référence à l'instance de Plugin quelque part... mais bon... un p'tit tableau privé et c'est réglé (mais à première vue, je doute que tu en ais besoin).