9
votes

Amélioration du cadre de la classe JavaScript de John Resig

Bonjour tout,

J'ai récemment cherché un beau cadre de classe JavaScript simple qui ne fait que l'héritage de base. J'ai trouvé EXEMPLY FRACK de John Resig sur son blog et je trouve qu'il est assez satisfaisant pour mes besoins. Cependant, la poste date de 2008, et c'est après tout, le Web dont nous parlons.

Donc, ma question est, voudriez-vous utiliser ce système tel quel, ou s'il y aurait des améliorations à faire, des choses découvertes au fil des ans? Ou peut-être un cadre de classe existant et activement soutenu qui ressemble à celui-ci?

Merci.


0 commentaires

3 Réponses :


8
votes

Les gars de JavascriptMVC ont fait un excellent travail de création d'un Mise en œuvre de la classe basée sur John Resigs Cadre exemple:

classe fournit une héritage simulée en JavaScript. Utilisez des CLS pour combler le écart entre la fonctionnelle de JQuery Style de programmation et orienté objet La programmation. Il est basé sur John Héritage de classe simple de Resig une bibliothèque. Outre le prototypal héritage, il comprend quelques-uns Caractéristiques importantes: P>

$.Class.extend('My.Class',
{
    // Static properties
},
{
    init : function(args)
    {
            // This is the constructor
    },

    classMethod : function()
    {
        alert("Class method called.");
    }
});


1 commentaires

Pouvez-vous me signaler où la définition peut être trouvée? Cela semble prometteur. :)



9
votes

Vous voudrez peut-être prendre des conseils de Douglas Crockford (mon emphase):

J'ai écrit JavaScript pendant 8 ans maintenant, et je n'ai jamais trouvé une seule fois besoin d'utiliser une fonction Uber. ... Je vois maintenant mes premières tentatives pour soutenir le modèle classique en JavaScript comme une erreur .

Douglas Crockford, héritage classique dans JavaScript ,


6 commentaires

Je seconde cela. Javascript a ses propres idiomes et "porting" sur héritage classique n'est vraiment rien de plus qu'une béquille ... La langue a ses propres modèles de réutilisation et installations qui fonctionnent tout simplement bien. (Mais si j'allais adopter un modèle de héritage classique, Resig's est toujours bon).


HM, je pense qu'un gros problème est que ces "idiomes propres" sont trop souvent non plus bien compris ou mal implémentés. Donner un cadre qui est familier (par exemple, héritage de OO classique) rend la transition beaucoup plus facile (voir Scala). Avoir une béquille est encore mieux que ramper.


Daff - mais une fois que l'erreur de mise en œuvre d'un modèle basé sur une classe est réalisée, il peut y avoir beaucoup de code à réparer. L'héritage JavaScript n'est pas difficile à apprendre, cela prend simplement un esprit ouvert. Notez que le livre de Resig a déduit à l'automne 2008 (septembre 2008) n'a toujours pas été publié et son titre semble être un "secrets de JavaScript" plus modeste. Peut-être que la resig met également en mesure l'utilité de l'héritage basé sur la classe dans JavaScript.


Je ne comprends pas vraiment ça. Vous dites que vous dites que le héritage prototype doit être utilisé à la place? Mais alors, comment vous référez-vous à la classe mère? Je pense que le commentaire de Crockford à la fin de "Super" pourrait avoir à faire avec quelque chose, mais je suis confus à ce stade.


Vous pouvez adorer Douglas Crockford si vous voulez. J'ai conçu des applications Web depuis 12 ans et j'ai constaté que l'émission de héritage classique dans JS est très simple et conduit à un code plus propre plus testable. À chacun ses goûts.


@ Juanmendes - aucun adoration, simplement une citation de quelqu'un qui se trouve sur le comité TC39 qui contrôle les modifications apportées à la carte ECMAScript et possède une expérience significative avec les langages et le développement de programmation en général, pas seulement sur le Web. Intéressant que la citation a été mise à jour à 14 ans (c'est peut-être une valeur calculée de la date à laquelle l'article a été écrit).



2
votes

Vous pouvez consulter cette version étendue du modèle de classe de John Resig:

https://github.com/riga/jclass

Il est toujours construit sur des prototypes mais fournit également des membres privés à l'aide de fermetures.


0 commentaires