2012-08-09 12 views
6

Also ich sehe viel JavaScript-Code da draußen, der "neu" verwendet, wenn er Konstruktoren macht. Nach dem Lesen eines Teils von JavaScript der guten Teile scheint es, dass die Verwendung von "neu" nicht der Schlafanzug der Katze ist. Das war vor 4 Jahren ... Ist es immer noch nicht zu empfehlen? Was ist der aktuelle Standard?Wird "neu" in JavaScript immer noch nicht empfohlen?

Antwort

7

Seit wann wird new nicht empfohlen? D. Crockford hat einen gültigen Punkt und eine starke Meinung, aber new ist Teil der Sprache und wird sehr oft in vielen Projekten verwendet. new ist Teil des Prototypvererbungsmodells und muss zum Erstellen neuer Instanzen mit einer Konstruktorfunktion verwendet werden. Crockford weist auf einen rein funktionalen Ansatz hin, der den this Kontext in geeigneter Weise und return this verwendet, um Eigenschaften und Methoden zwischen untergeordneten Objekten erben zu können. Es ist eine andere Lösung für ein häufiges Problem, aber es bedeutet nicht, dass nicht verwendet werden sollte. In der Tat, eine der Kopieren/Einfügen JS Schnipsel aller Zeiten ist Crockford, die object.create polyfill und verwendet new:

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

Das stimmt! In seinem Buch erwähnt er "Verwendung dieses Stils von Konstruktorfunktionen wird nicht empfohlen" (der Stil, der neu verwendet). Dann fährt er fort, andere Lösungen zu beschreiben. Deshalb habe ich die Frage aufgeworfen. – Parris

+3

Er empfiehlt es nicht, da es in einigen Fällen zu Verwirrung führen kann, aber es gibt andere gängige Methoden, um Verwechslungen wie die Kapitalisierung Ihrer Konstruktorfunktionen zu vermeiden. Du könntest das gleiche über Crockford sagen, das nicht empfiehlt, '++' und '--' ... – elclanrs

+0

zu verwenden, von denen ich denke, dass sie benutzbar sind, aber ich hörte auf, weil jeder, mit dem ich arbeite, entschied, diese Operatoren zu benutzen. – Chris

2

Es gibt nicht viel seit 2008 abgesehen von der Crockford beeinflusst Object.create seinen Weg verändert hat in ECMAScript 5: new hat immer noch das gleiche Verhalten und die Nachteile, die Douglas Crockford mit Nachdruck hervorgehoben hat. Meine eigene Meinung ist, dass er die Probleme ziemlich überschätzt hat und Entwickler gegen einen nützlichen Operator gedreht hat, also verwende ich es ohne Problem weiter; Ich würde vorschlagen, dass andere Entwickler ihre eigene Meinung bilden, anstatt blindlings (die zugegebenermaßen bewundernswerte) Crockford internalisieren und erbrechen.

+0

Ich stimme zu. Ich denke, er sollte wahrscheinlich gesagt haben, dass wir es mit dem Wissen verwenden sollten, dass es Nachteile gibt, aber es ist brauchbar. – Chris

Verwandte Themen