2012-01-18 3 views
0

Salut, Je construis un petit cadre JS simple pour l'Université. J'ai des problèmes avec faire quelque chose comme jQuery.JavaScript Méthode anonyme

Actuellement, je peux appeler les méthodes par $.method() mais j'ai du mal à savoir comment ils font le $().method() car j'ai regardé la source et n'arrive pas à comprendre comment ils l'ont réellement atteint. Comme chaque fois que j'essaie d'adapter le mien pour qu'il ressemble au leur, ça ne marche pas.

Alors, quel est le meilleur moyen d'y parvenir.

+1

Relié/dupe: [Comment jQuery peut-il se comporter comme un objet et une fonction?] (Http://stackoverflow.com/questions/8734115/how-can-jquery-behave-like-an-object-and-a -fonction) –

+1

Ne supposez pas que la conception de la bibliothèque jQuery est bonne. [Ce n'est pas] (https://gist.github.com/1417030). Je vous recommande de concevoir le cadre comme vous le souhaitez. – Raynos

+0

Le bon terme n'est pas, * méthode anonyme *. Vous recherchez des méthodes dans la piscine du prototype, en chaînage. –

Répondre

2
function $() { 
    return Object.create(Proto); 
} 

$.method = function method() { ... }; 
Proto.method = function method() { ... }; 

$.method(); 
$().method(); 

Vous avez donc une fonction avec des propriétés qui sont des méthodes et votre fonction retourne un objet qui a des méthodes.

Également un autre conseil pro, $ est un nom de variable médiocre, utilisez quelque chose de plus significatif.

+0

@Spolto: (..... – Raynos

1

Chaque appel de fonction chaînable fonctionne de cette manière car chaque appel de fonction renvoie l'objet jQuery.

Par exemple,

var $=function(){ return $; }; 
$.foo = function(){return "foo"}; 

$().foo() //Outputs "foo"