2008-12-14 8 views
14

Auf Stackers 'Empfehlung, habe ich gelesen, Crockford ausgezeichnete Javascript: Die guten Teile.Der beste Weg, Javascript "gute Teile" zu verwenden

Es ist ein großartiges Buch, aber da so viel davon gewidmet ist, den besten Weg zu beschreiben, die grundlegende Funktionalität von Javascript zu verwenden, bin ich nicht sicher, wie ich seinen Rat in die Praxis umsetzen kann, ohne die Bemühungen vieler anderer Javascript-Programmierer zu kopieren .

Nehmen Sie diese Stelle, zum Beispiel:

Wenn Sie ein neues Objekt zu machen, können Sie das Objekt auswählen, dessen Prototyp sein sollte. Der Mechanismus, den Javascript bietet, um dies zu tun, ist chaotisch und komplex, aber es kann erheblich vereinfacht werden. Wir werden eine create Methode zur Object Funktion hinzufügen. Die Methode create erstellt ein neues Objekt, das ein altes Objekt als Prototyp verwendet.

if (typeof Object.create !== 'function') { 
Object.create = function(o) { 
    var F = function() {}; 
    F.prototype = o; 
    return new F(); 
} 

Ich könnte diesen Code auf alle meine Javascript-Projekte manuell hinzufügen, aber wäre ein großer Schmerz Überblick über alles zu halten.

Gibt es Bibliotheken, die Der gute Teil ‚s Empfehlungen und dadurch sparen Sie mir die Mühe, den Überblick behalten sie (/ physisch geben sie alle) implementieren?

+0

+1 für das Lesen von Crockfords Buch –

+0

+1 gute Frage! Ich habe auch das Gefühl, dass ich das Rad neu erfinde. – orip

+0

Das ist genau die Art von Frage, die ich hatte, nachdem ich sein Buch gelesen hatte. –

Antwort

5

Prototype hat viele großartige Funktionen, einschließlich einer Class helper, die die Details der JS "Vererbung" über den Objekt-Prototyp behandelt.

Edit: Verdammt, ich vergesse immer wieder, dass jQuery (meine eigene Bibliothek der Wahl) hat jQuery.extend

+0

'jQuery.extend()' kopiert Attribute der übergebenen Objekte in ein Zielobjekt. Sie können keinen Prototyp für das Zielobjekt angeben.IOW: Es dient einem anderen Zweck als 'Object.create()'. – feklee

1

Hat er nicht für Yahoo arbeiten? Sie könnten immer die Yahoo User Interface libraries verwenden.

Persönlich bin ich teilweise auf JQuery, wie es mir als prägnanter erscheint, aber Sie wissen: Pferde für Kurse.

1

Dojo ist Crockfords Ideen sehr genau gefolgt. Zum Beispiel gibt es eine Implementierung des Code-Snippets, das Sie oben unter der Funktion dojo.delegate implementiert haben (in einer noch schnelleren Form).

Ich glaube nicht, dass es ein bestimmtes Projekt gibt, das seinen Empfehlungen zu einem Abschlag folgt. Die meisten Toolkits stimmen mit einigen seiner Empfehlungen und Muster nicht überein. Wenn Sie sich über bestimmte Funktionen wie dieses Code-Snippet wundern, lohnt es sich zu fragen, welche speziellen Tools aus dem Buch Sie in Ihren Projekten verwenden möchten.

0

Ich denke, YUI ist am nächsten zu dem, was Crockford in seinem Buch lehrt. (Er ist der Yahoo-Architekt auch und es macht Sinn)

0

Werfen Sie einen Blick auf es5-shim, eine Bibliothek, die eine - wenn auch unvollständige - Shim für Object.create() und andere Dinge bietet.