$.extend() avec des fonctions
Je suis en train d'écrire un plugin jQuery qui ont besoin de fonctions de rappel qui sont exécutées, par exemple, lorsqu'une option est choisie à partir de la <select>
le plugin est appliqué.
J'ai vu des plugins qui vous permettent de définir des fonctions dans les options vous transmettre, comme ceci:
$('div.foo').pluginBar({
option1: 'red',
someEvent: function() {
//Do stuff
}
});
Je veux être en mesure de définir une valeur par défaut someEvent
fonction dans mon code du module, mais si l'utilisateur définit cette fonction dans les options qu'ils passent, il doit remplacer la fonction par défaut. Est-ce possible avec $.extend()
, ou suis-je regarde dans le mauvais endroits?
J'ai eu un coup d'oeil à la plugin de création de tutoriel, mais je ne pense pas qu'il va le comportement par défaut de fonctions n'importe où. J'ai lu des choses sur l'utilisation d'un init:
fonction, mais je préfère juste être en mesure de définir une fonction (à l'intérieur de le plugin espace de noms) et de le modifier avec les options passées à la plugin.
- Désolé, c'était plus d'une frustration personnelle commentaire. Sera supprimer.
- En JavaScript (contrairement à la plupart des autres grandes langues actuelles), les fonctions sont des objets de première classe. Cela signifie que vous pouvez faire la même chose avec les références de fonction que vous pouvez faire avec n'importe quel autre type d'objet de référence, y compris le présent. Les réponses montrent comment, mais le point essentiel à retenir est que la fonction de références sont des valeurs comme les références de l'objet (parce qu'ils sont les références de l'objet). C'est extrêmement utile. 🙂
- Merci beaucoup pour l'explication.
Vous devez vous connecter pour publier un commentaire.
Voici un exemple:
Si vous ne spécifiez pas
someEvent
lorsque le câblage en place le plugin, la valeur par défaut sera utilisée.En javascript, les fonctions sont des objets de première classe. Ce qui signifie, vous pouvez utiliser des fonctions comme vous le feriez de toute autre variable:
Comme vous pouvez le voir, les fonctions sont juste comme n'importe quelle autre valeur. Ainsi, vous pouvez définir une option par défaut qui sera une fonction, et de le remplacer comme rien d'autre.
Un exemple artificiel, mais je pense que ça illustre bien le propos.
Oui, vous pouvez étendre les objets qui ont les valeurs de la fonction.
En JavaScript il n'y a souvent pas de différence pratique entre les fonctions et d'autres valeurs, de sorte que vous pouvez traiter des fonctions comme vous le feriez avec d'autres objets ou de types de données.