J'écris un plugin JQuery qui nécessitera des fonctions de rappel exécutées, par exemple, lorsqu'une option est choisie parmi les
3 Réponses :
Oui, vous pouvez étendre des objets qui ont des valeurs de fonction.
var originalFunction = function() { alert( 'original' ); } var a = { foo: 'bar', func: originalFunction }; var b = { foo: 'baz', func: function() { alert( 'ok' ); } }; var c = $.extend( {}, a, b ); c.func(); // alerts 'ok'
Voici un exemple: si vous ne spécifiez pas SOMEVENT code> lors du câblage du plug-in, il sera utilisé par défaut. P> < / p>
Je pensais que je pensais que je partagerais: avoir «div.foo» disponible à la fonction SOMEVENT, passez «Ceci» sans guillemets en tant que paramètre. Fiddle - jsfiddle.net/taytayevanson/ly3k7
en JavaScript, les fonctions sont des objets de première classe. Signification, vous pouvez utiliser des fonctions telles que toute autre variable: Comme vous pouvez le constater, les fonctions sont comme n'importe quelle autre valeur. Donc, vous pouvez définir une option par défaut qui sera une fonction et la remplacer comme tout autre chose. P> $.fn.weirdNoise = function ( options ) {
var defaults = {
makeNoise : function () {
return 'Rabadabadaba';
},
isSilly : true
};
return $.extend( defaults, options );
};
var raba = $( 'foobar' ).weirdNoise().makeNoise();
raba.makeNoise(); //'Rabadabadaba'
raba.isSilly; //true
var shaba = $( 'foobar' ).wierdNoise({
makeNoise : function () {
return 'Shabadabadoo';
}
});
shaba.makeNoise(); //'Shabadabadoo'
shaba.isSilly; //true
@ T.J.Crowder Désolé, était plus un commentaire de frustration personnel. Va enlever.
En JavaScript (contrairement à la plupart des autres principales langues actuelles), les fonctions sont des objets de première classe. Cela signifie que vous pouvez faire la même chose avec des références de fonction que vous pouvez faire avec tout autre type de référence d'objet, y compris ceci. Les réponses démontrent comment, mais le point clé à emporter est que les références de fonction sont des valeurs comme des références d'objet (car elles sont i> Références d'objet). C'est extrêmement utile. :-)
@ T.J.Crowder Merci beaucoup pour l'explication.