Javascript OOP-best practices?
Ich bin krank, sehen Sie Dutzende von verschiedenen Möglichkeiten der Objekt-orientierten Programmierung in Javascript. Kann jemand mir sagen, welche Technik ich verwenden soll, bedenkt, dass ich arbeiten will, ein großes Projekt und ich will, dass mein code auf die Zukunftssicherheit?
- mögliche Duplikate von Javascript OO-syntax
- Ich mag, wie es gibt bereits drei verschiedene Javascript-OO-Notationen als Antworten auf diese Frage, während die Frage war eine einzige, die der OP verwenden sollte. Es gibt verschiedene Notationen - ich denke, dass für die Klarheit, die vor-und Nachteile der einzelnen notation sollte Hinzugefügt werden, dass die Antworten sich, auf die die OP-Entscheidung treffen können.
- Wenn Sie brauchen eine schnelle und einfache Lösung, einen Blick auf github.com/haroldiedema/joii. Es ermöglicht Ihnen die Verwendung von Klassen, Schnittstellen und Merkmale/mix-ins genauso, als würden Sie erwarten, dass es funktioniert. Es ist sehr klein, leicht, implementiert nur das, was Sie brauchen, und wird auch unterstützt IE6.
- mögliche Duplikate von stackoverflow.com/questions/907225/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies sind nur ein paar kurze Richtlinien, die ich mir ausgedacht habe, wenn jemand etwas sinnvolles hinzuzufügen, habe ich diese Antwort als community-wiki, so ist es sollte leicht genug sein, für Sie zu Bearbeiten.
So dann erstellen Sie ein Rechteck-Objekt mit:
Und dann dein code wird niemals stören, oder gestört werden, indem jemand anderes
Rectangle
.In diesem Beispiel ist die Fläche des Rechtecks kann umgewandelt werden in Quadratmeter mit der Methode
inSquareFeet()
.Stellen Sie sicher, inSquareFeet ist eine Methode des Objekts zurückgegeben, die von
getAreaObject()
und nicht eine Methode derAndrew.JS.Rectangle
versuchen:
window['Andrew']['JS'] = ...
wennwindow.Andrew.JS = ...
funktioniert genauso gut mit weniger Tastatureingaben und einfacher auf die Augen?Ich immer mit John resig ' s:
http://ejohn.org/blog/simple-javascript-inheritance/
Es ist einfach und erfordert keinen Rahmen um zu funktionieren.
Weil Sie arbeiten auf ein großes Projekt würde ich Vorschlag, den ein javascript-framework wie mootools http://mootools.net/.
Es hat eine gute Klassen-und vererbungsstruktur.
Meine ideale Objekt für OOP ist wie eine Instanz-Methode mit Prototypen:
Beispiel:
Dann würde ich immer verwenden, wie:
- Und das ist die Art von Straße, in der ich nach unten gehen, wenn es um den Aufbau einer JavaScript-OO-Stil-Architektur.
Users
nichtGetInstance
Eigenschaft. Meinten Sie berufen sich auf die anonyme Funktion zuweisen, bevor das Ergebnis an die Nutzer?nur zu deiner information, ich denke YUI bietet einige tolle tutorials zu diesem Thema
Die Stärke liegt darin, dass es initialisiert das Globale Objekt automatisch, können Sie die Integrität Ihres Codes und organisiert jedes Stück Funktionalität in einer bestimmten Gruppierung, die durch Ihre definition.
Diese Struktur ist solide, die Darstellung der grundlegenden syntaktischen Dinge, die Sie erwarten würden von OOP, ohne die wichtigsten Wörter.
Gibt es auch einige geniale Möglichkeiten für die Einrichtung der Schnittstellen als auch. Wenn Sie wählen, so weit zu gehen, eine einfache Suche wird Ihnen einige gute tutorials und tips.
Sogar einrichten intellisense ist möglich mit javascript und visual studio, und definieren jedes Stück und auf Sie vereinfacht das schreiben von javascript-cleaner und übersichtlicher.
Mit diesen drei Methoden benötigt, die von Ihrer situation hilft, die globalen Namensraum sauber, halten Sie Ihren code organisiert und pflegt die Trennung von Bereichen für jedes Objekt.. wenn richtig eingesetzt. Denken Sie daran, Object-Oriented Design ist nutzlos, wenn Sie nicht nutzen Sie die Logik hinter der Verwendung von Objekten!
Dies ist eine funktionale Ansatz und hat viel mehr drauf (wie Kapselung), dann alles, was Sie gehen, um zu sehen
In einer Allgemeinen Weise, die Sie nicht tun sollten OO in javascript, das ist es nicht toll, eine Sprache für die es für eine Vielzahl von Gründen. Denke Regelung mit schnörkeligen Klammern und Semikolons, und Sie werden beginnen, das schreiben der Sprache, wie die Profis tun. Dass gesagt wird, irgendwann OO ist eine bessere Passform. In diesen Fällen ist in der Regel die beste Wette
bringen erbschaft in den mix
Dies macht die Dinge ein bisschen mehr complected, aber erreicht das gewünschte Ergebnis, während immer noch unter einem funktionalen Ansatz von OO-Konzepten (in diesem Fall mit decorator-Funktionen anstelle von realen Vererbung). Was mir an dem ganzen Ansatz ist, dass wir wirklich noch die Behandlung von Gegenständen die Art und Weise Sie verwendet werden sollen, in dieser Art von Sprache -- eine Eigenschaft Tasche, die Sie anfügen können, dass Zeug bei werden.
Ein weiterer Hinweis ist, das ist völlig anderen dann, was Sie sehen, die meisten der Zeit, die in den meisten der jobs, die Sie jemals funktionieren wird, und oft ist schwer zu erklären, a) was Los ist, und b) warum es eine gute Idee, um Mitarbeiter.
Ich einen solchen Muster-und empfehlen Sie es benutzen zu:
Person.prototype
.var firstname = firstname
bisschen unnötig ist, da die parameterfirstname
ist bereits eine private variable.Können Sie versuchen, mit einem einfachen, nützlichen und schnellen Objekt:
Um dies zu verwenden müssen Sie erstellen eine Instanz dieses Objekts und verwenden, wie ein Objekt in java:
Auch Sie können überprüfen Sie diesen link, um eine andere Lösung: http://www.javascriptkit.com/javatutors/oopjs.shtml
Ich hoffe, dass Ihre Frage zu beantworten.
foo
ist nicht eine Funktion,new foo()
fehl.