9
votes

Concepts orientés objet Java en JavaScript

J'utilise Java depuis longtemps et, depuis un certain temps, je faisais du développement Web à l'aide de GWT (Google Web Toolkit). La beauté de c'était que j'avais mes constructions orientées objet Java et ne vous inquiétez pas de la manière dont il est traduit en GWT - laissez Google s'en occuper. Ma connaissance de JavaScript était suffisante mais pas dans la mesure où je pouvais faire de la forte développement Web avec elle. Plus tard, j'ai décidé que je dois avoir une compréhension plus approfondie et plus approfondie de JavaScript et que cela a été un véritable roller coaster - juste à la fois où je pense avoir quelque chose, quelque chose vient et me prouve que je me trompe - que je n'ai tout simplement pas mal compris .

Quel meilleur endroit pour exprimer ma préoccupation que Stackoverflow: Je supplie des ressources et des indications sur quel serait un JavaScript équivalant à certains des concepts Java suivants: P>

Class
instance of a class - object
Member variables
Getters
Setters
Abstract Class
Interface
Inheritance
Access Modifiers
Constructors


4 commentaires

C'est une bonne question mais je vote de près, car sa portée est très large.


La chose est, la moitié de ces concepts n'existent pas dans JS, en partie dus au PROTOTYPAL OOP et en partie dus à la dactylographie dynamique. Vous n'aurez pas très loin d'essayer de traduire des concepts individuels.


Je vote contre la fermeture parce qu'il ne veut pas que nous expliquions ce genre de choses. Il ne veut que des liens avec de bonnes ressources.


Les deux premiers chapitres d'un cours que je travaille sur expliquer certains de ces concepts, en particulier la portée, l'héritage et les constructeurs. evenedmind.com/courses/1-Advanced-javascript-concepts .


8 Réponses :


6
votes

Je pense que vous avez principalement besoin de comprendre que JavaScript est un langage PURE OOP, mais il n'a pas de cours! ... que pour un programmeur Java est un choc, et prend un certain temps pour que votre tête ait tendance, mais est un paradigme assez puissant.

Cette vidéo ici est de Douglas Crockford, un gars qui a aidé à créer JavaScript, brillant pour les nouveaux programmeurs JavaScript

http://www.youtube.com/watch?v=V2IFWCNQS6M


1 commentaires

JavaScript est pas une langue pure oop, mais il propose basé sur l'objet < / a> et Caractéristiques à base de prototypes.



3
votes

Eh bien, la règle de base du pouce en JavaScript est que cela vous permettra de faire presque n'importe quoi. Il n'y a pas de modificateurs d'accès. Puisque JavaScript n'empêche pas beaucoup beaucoup, des choses comme la classe abstraite n'ont tout simplement pas de sens. Vous pouvez toujours l'instancier.

Le comportement de classe vaguement de la classe provient des objets et vous pouvez obtenir un constructeur comme un comportement à l'aide de prototype. http://www.javascriptkit.com/javatus/proto.shtml

Les variables de membre sont similaires mais non typées et peuvent également contenir des fonctions ainsi que des données.

En JavaScript, vous avez besoin de discipline personnelle et de conventions de codes forts pour simuler l'une de ces choses, mais la langue ne vous aidera pas un peu. C'est ultra flexible, ce qui signifie qu'il ne se met pas dans votre chemin, mais cela vous donne aussi beaucoup de corde pour vous accrocher aussi.

Il est préférable de l'approcher comme une langue complètement différente. N'essayez pas de le relier à Java, car il est fondamentalement différent de nombreuses manières.

Le nom est la partie la plus connexe de tout ce qui crée beaucoup de confusion ...


0 commentaires

5
votes

Douglas Crockford explique comment imiter très bien ces fonctionnalités orientées objet. Son livre JavaScript: Les bonnes parties sont une question que tout le monde devrait lire et explique comment tirer le meilleur parti des caractéristiques souvent déroutantes de Javascript.

Essayez Ce bref tutoriel de son moyen d'obtenir des méthodes et des propriétés de classe privée via fermetures. En outre, Ce didacticiel vous montrera comment réaliser un héritage classique.


0 commentaires

3
votes

J'ai été à la même quête que vous mais j'ai dû gratter et récupérer la connaissance partout.

Il y a des tonnes d'excellents postes surtherpoververflow pour tous ces sujets, puis il y a MDN Je recommanderais également de regarder dans la source des bibliothèques populaires comme JQuery. Voir cette visionneuse sourde http://james.padolsey.com/jquery/

Ceci est un tutoriel interactif brillant par le Grand John Resig:
http://ejohn.org/apps/learn/

Voici quelques très bons pour que des messages qui m'ont aidé à mieux comprendre JS:

Comment "correctement" Créer un objet personnalisé dans JavaScript ?
Quel est le mot-clé «nouveau» en JavaScript?
Pourquoi le prototypage JavaScript est-il? Pourquoi est-il nécessaire de définir le constructeur de prototypes? de
Méthode de base d'appel en JavaScript à l'aide de l'héritage fonctionnel de Douglas Crockford
Aide à comprendre JQuery's jquery.fn.init pourquoi est init en fn
Qu'est-ce que jquery.fn signifie?

Pourquoi "cette" résolution est si spéciale dans JavaScript? < BR> Quelle est la différence entre appel et appliquer?

appel de la fonction dynamique (appliquer)
Formatage des données JavaScript / jolie imprimante
Vérification si une clé existe dans un objet JavaScript?

Voici quelques postes sur la pomneur de JavaScript et que vous ne savez pas:

est-il possible de refléter les arguments d'une fonction javascript?
Arguments de fonction
Quel est le !! (pas non) opérateur en JavaScript?
Comment cela fonctionne JavaScript / JQuery Syntaxe: (function ( fenêtre, non défini) {}) (fenêtre)?
ce qui équivaut à l'opérateur (== vs ===) devrait être utilisé dans les comparaisons JavaScript? Comportement de l'opérateur de suppression en javascript
var myArray = [], le nom ;?
Pourquoi est nul un objet et quelle est la différence entre null et undefined?
Checking for null / non définie JavaScript
Qu'est-ce que le point d'exclamation ne avant que la fonction?


0 commentaires

1
votes

Je peux penser à quelques références qui répondront à la plupart de ces questions, notamment en indiquant explicitement que JavaScript est une langue dynamique typée et dynamique versus Java en tant que langage statique fortement typé. Je pense que c'est le type d'analogie directe que vous recherchez.

De nombreuses questions générales des cinq premiers articles énumérées auront clairement parsemée d'eux avec une lecture rapide de " Travailler avec des objets "section du guide JavaScript au Réseau de développeurs Mozilla . (Classe, instance d'un objet de classe, variables de membre, getters, setters)

Le deuxième groupe d'articles que je pense sont très bien expliqués dans Ce site de Douglas Crockford, Qui a écrit le livre O'Reilly "JavaScript: les bonnes parties" ainsi que l'outil de code JSLint. (Classe abstraite, interface, héritage, modificateurs d'accès, constructeurs) Crockford fait des analogies très directes entre Java et JavaScript dans une page qui décrit comment JavaScript prend en charge non seulement l'héritage classique, mais également des modèles de réutilisation de code également .


0 commentaires

1
votes

Pour que certaines informations sur la variable de JavaScript ont un coup d'œil à cet article. Il explique les bases de la création de variables publiques, protégées et privées pour les prototypes d'objets. http://www.anzaan.com/ 2009/05 / JavaScript-variable-variable-Scope-Protected-et-Public /


0 commentaires

3
votes

JavaScript est pure oo langue, mais il manque quelques-uns des concepts de la classe des langages de la classe comme Java ou C # Cependant, la bonne nouvelle est que les bonnes personnes de l'ECMA travaillent sur la question pour apporter des concepts OO tels que l'abstraction, les classes, l'espace de noms, l'héritage, la propriété ... dans JavaScript

Peter Michaux a une bonne explication sur ce


0 commentaires

1
votes

J'ai eu un choc très similaire à celui que vous avez eu lorsque vous avez essayé d'aller à JavaScript. JavaScript Les bonnes pièces de Douglas Crockford et son site http://crockford.com/ se sont avérés d'une aide immense pour moi.


0 commentaires