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
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();
};
}
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.
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
- 1. Warum wird dieses JPanel immer noch neu gezeichnet?
- 2. Seite wird immer noch mit event.preventDefault() neu geladen;
- 3. Wird BuildConfig.DEBUG immer noch abgehört?
- 4. Wird die Verschlüsselung von Javascript empfohlen?
- 5. Warum HibernateTemplate nicht empfohlen wird?
- 6. JavaScript: setTimeout in Schleife funktioniert immer noch nicht
- 7. BeatifulSoup4 get_text hat immer noch Javascript
- 8. Warum wird mein Tag immer noch angezeigt?
- 9. Wird empfohlen, JSF 2.0 + Facelets + HTML5/CCS3/JavaScript zu kombinieren?
- 10. Wird Cassandra jdbc immer noch aktiv unterstützt?
- 11. kann immer noch nicht wählen erstellt Element von Javascript
- 12. Navigationsschublade wird nicht angezeigt, aber immer noch geöffnet
- 13. wkwebview immer noch nicht Universal Link
- 14. Warum wird gunicorn_django nicht mehr empfohlen?
- 15. * neu ist immer falsch. IMMER
- 16. Warum "$(). Ready (handler)" wird nicht empfohlen?
- 17. In Java, ist neu immer neu?
- 18. In Express.js warum wird Code nach res.json() immer noch ausgeführt?
- 19. Wird Yacc immer noch in der Industrie verwendet?
- 20. Warum wird empfohlen, .innerHTML zu vermeiden?
- 21. JPasswordField.getPassword() ist immer noch nicht gesichert?
- 22. Git immer noch nicht nach dem Hinzufügen
- 23. Kann immer noch nicht verstehen, Python-Import
- 24. Nicht korrekt gedruckt, aber immer noch
- 25. Keine Fehler - immer noch nicht schreiben
- 26. php password_verify funktioniert immer noch nicht
- 27. Javascript - setInterval() läuft immer noch nach clearInterval() namens
- 28. PyWinAuto immer noch nützlich?
- 29. Aktion genehmigt - publish_actions funktioniert immer noch nicht
- 30. Welcher PyPy Speicherprofiler wird empfohlen?
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
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
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