JavaScript effektiv. 68 Dinge, die ein guter JavaScript-Entwickler wissen sollte. David Herman

Ähnliche Dokumente
Fotografie: Mehr als nur Blende und Zeit

Software entwickeln mit Verstand

Agile Softwareentwicklung in großen Projekten

Vaughn Vernon Die Übersetzer: Dr. Carola Lilienthal Henning Schwentner

Dipl.-Inform. Arno Becker ist bei der visionera GmbH verantwortlich für den Bereich»Mobile Lösungen«. Nach langjähriger Erfahrung mit Java ME

Gradle. Ein kompakter Einstieg in modernes Build-Management. Joachim Baumann. Joachim Baumann, Gradle, dpunkt.verlag, ISBN

Abenteuer Softwarequalität

Konfigurationsmanagement mit Subversion, Maven und Redmine

Das LEGO -MINDSTORMS-EV3-Ideenbuch

Lebendige Webseiten mit Adobe Edge Animate

Bereits während seines Studiums der Humanmedizin übte Bertram Solcher fotojournalistische Tätigkeiten für regionale

Swift für Ungeduldige

Dipl.-Inform. Arno Becker Dipl.-Inform. Marcus Pant

Abenteuer Softwarequalität

Neuronale Netze selbst programmieren

Andreas Spillner / Ulrich Breymann, Lean Testing für C++-Programmierer, dpunkt.verlag, ISBN

Erste Hilfe für Social Media Manager

Scrum in der Praxis. Erfahrungen, Problemfelder und Erfolgsfaktoren. Bearbeitet von Dipl.-Inform. Sven Röpstorff, Dipl.-Kaufm.

Praxiswissen Softwaretest

Tilo Linz ist Vorstand und Mitgründer der imbus AG, einem führenden Lösungsanbieter für Softwaretest und seit mehr als 20 Jahren

Panoramafotografie: Theorie und Praxis

und -implementierungstechniken, Datenbanken & Java.

Tabellen & Diagramme mit Excel

ISBN (Print); (PDF), (epub) Bibliografische Information der Deutschen Nationalbibliothek

Sehen und Gestalten. David DuChemins etwas andere Fotoschule. von David DuChemin. 1. Auflage

TCP/IP Grundlagen und Praxis

Das Fuji X100 Handbuch

Kinder fotografieren

Konzeption und Dokumentation erfolgreicher Webprojekte Design und Planung von Websites strukturiert erstellen, dokumentieren und präsentieren

Dr. Michael Diechtierow

war er unter anderem als Chefarchitekt, Technischer Produktmanager und Berater bei verschiedenen IT-Unternehmen tätig.

IT-Service-Management mit ITIL 2011 Edition

Makrofotografie. Gestaltung, Licht und Technik in Natur und Studio. Cyrill Harnischmacher

Dominik Schadow. Java-Web-Security. Sichere Webanwendungen mit Java entwickeln

Das "inoffizielle" LEGO-Technic-Buch

Vision Was ist der Sinn und Zweck des Systems? Stakeholder Wem nützt es? Wer ist davon betroffen? Wer hat Einfluss darauf?

Barrierefreiheit verstehen und umsetzen

Das FUJIFILM X100T/X100S Handbuch

petersons fotoschule blitzlicht

ww unk w t.. e p / un plu k s t.de/plus

Nicolai Josuttis. SOA in der Praxis. System-Design für verteilte Geschäftsprozesse

Das Alte Hallenbad Heidelberg

Psychologie der Fotografie: Kopf oder Bauch?

Peter Fauland. Das FUJIFILM X100T/X100S Handbuch

ios-apps programmieren mit Swift

Software in 30 Tagen

Betriebssysteme. Grundlagen, Konzepte, Systemprogrammierung. von Eduard Glatz. 1. Auflage

Management von IT-Produkten

Netzsicherheit. - Grundlagen & Protokolle - Mobile & drahtlose Kommunikation - Schutz von Kommunikationsinfrastrukturen

Maik Schmidt, Arduino, dpunkt.verlag, ISBN D3kjd3Di38lk323nnm

Besser fotografieren

Markus Gaulke

von Softwaresystemen unterschiedlicher Größe.

Digitales Publizieren für Tablets

JavaScript objektorientiert

60 Tipps für kreative iphone-fotografie

Michael Kurz Martin Marinschek

Web-Apps mit jquery Mobile

Soft Skills für Softwareentwickler

Das Canon EOS 70D Handbuch

Porträt-Composings gestalten

Dipl.-Inform. Henning Wolf Prof. Dr. ir. Rini van Solingen Eelco Rustenburg

Mike Burrows Übersetzer: Florian Eisenberg Wolfgang Wiedenroth

Pixel & Vektor. Kreative Grafiken mit Illustrator und Photoshop Für CS5 und CS4. Katharina Sckommodau

JavaScript kinderleicht!


Personal Kanban. Visualisierung und Planung von Aufgaben, Projekten und Terminen mit dem Kanban-Board. Jim Benson Tonianne DeMaria Barry

er auch mit dem 3D-Programm Blender in Kontakt, über das er bisher zahlreiche Vorträge hielt und Artikel in Fachzeitschriften veröffentlichte.

Android 4.4. Programmieren für Smartphones und Tablets - Grundlagen und fortgeschrittene Techniken. von Arno Becker, Marcus Pant

IT-Servicemanagement mit ITIL V3

IT-Servicemanagement mit ITIL V3

Julian Breuer, GoPro!, dpunkt.verlag, ISBN D3kjd3Di38lk323nnm

Cloud-Computing für Unternehmen

Über die Herausgeber

Meike Fischer hat an der Hochschule für Gestaltung in Offenbach Visuelle Kommunikation

Professionell blitzen mit dem Nikon Creative Lighting System

Fotokurs Straßenfotografie Szenen, Menschen und Orte im urbanen Raum fotografieren

Konfigurationsmanagement mit Subversion, Ant und Maven

VMware vrealize Automation Das Praxisbuch

Roberto Valenzuela

Der deutsche Föderalismus

Testen in Scrum-Projekten

Jeff Rojas Männer fotografieren

Uwe Vigenschow Andrea Grass Alexandra Augstin Dr. Michael Hofmann

Tilman Beitter Thomas Kärgel André Nähring Andreas Steil Sebastian Zielenski

Performanceoptimierung von ABAP -Programmen

Tutorien Physik Arbeitsblätter

Prof. Dr. Matthias Knoll

Fotokurs Straßenfotografie

Workshop HTML5 & CSS3

Software modular bauen

Gestalten mit Licht und Schatten

Praxisbuch BI Reporting

Gestalten mit Licht und Schatten

Stimmen zur englischen Originalausgabe:

Das Sony α6000 Handbuch

Continuous Delivery. Der pragmatische Einstieg. von Eberhard Wolff. 1. Auflage. dpunkt.verlag 2014

Das Sony Alpha 6300 Handbuch

Kim Nena Duggen ist Vorstand und Trainerin der oose Innovative Informatik eg. Ihre thematischen Schwerpunkte sind das Geschäftsprozessmanagement,

Transkript:

D3kjd3Di38lk323nnm David Herman JavaScript effektiv 68 Dinge, die ein guter JavaScript-Entwickler wissen sollte Mit einem Geleitwort von Brendan Eich, dem Erfinder von JavaScript

Lektorat: René Schönfeldt Übersetzung: G&U Language & Publishing Services GmbH, www.gundu.com Satz: G&U Language & Publishing Services GmbH, www.gundu.com Fachgutachter: Marcus Ross, Buchholz Herstellung: Frank Heidt Umschlaggestaltung: Helmut Kraus, www.exclam.de Druck und Bindung: M.P. Media-Print Informationstechnologie GmbH, 33100 Paderborn Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. ISBN 978-3-86490-127-0 1. Auflage 2014 Copyright 2014 dpunkt.verlag GmbH 691 Heidelberg Authorized translation from the English language edition, entitled Effective JavaScript: 68 specific ways to harness the power of JavaScript, 1st Edition, 0321812182 by Herman, David, published by Pearson Education, Inc, publishing as Addison-Wesley Professional, Copyright 2013 dpunkt.verlag GmbH. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. German language edition published by dpunkt.verlag GmbH, Copyright 2013. Autorisierte Übersetzung der englischsprachigen Originalausgabe mit dem Titel»Effective JavaScript: 68 specific ways to harness the power of JavaScript«von David Herman. ISBN 978-0321812186, erschienen bei Addison-Wesley Professional, ein Imprint von Pearson Education Inc; Copyright 2013 Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen. Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen. Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen. 5 4 3 2 1 0

vii Inhaltsverzeichnis Geleitwort............................................................ Vorwort............................................................... Danksagung.......................................................... xiii xvii xxi 1 Darf ich vorstellen: JavaScript.......................................... 1 Thema 1 Welche Version von JavaScript verwenden Sie?...................... 1 Thema 2 Fließkommazahlen in JavaScript sind anders......................... 7 Thema 3 Vorsicht bei der impliziten Typumwandlung......................... 10 Thema 4 Verwenden Sie primitive Datentypen statt Objektwrappern.......... 16 Thema 5 Vergleichen Sie unterschiedliche Typen nie mit ==................... 18 Thema 6 Achtung: JavaScript ergänzt automatisch Semikolons................ 22 Thema 7 JavaScript nutzt 16-Bit-Unicode...................................... 29 2 Gültigkeitsbereich von Variablen....................................... 33 Thema 8 Verwenden Sie das globale Objekt so wenig wie möglich............. 33 Thema 9 Vergessen Sie nicht, lokale Variablen zu deklarieren.................. 36 Thema 10 Vermeiden Sie das Schlüsselwort with............................... 38 Thema 11 Keine Angst vor Closures............................................ 41 Thema 12 Das müssen Sie kennen: Hoisting.................................... 44 Thema 13 Schaffen Sie lokale Gültigkeitsbereiche durch IIFEs................... 47 Thema 14 Gültigkeit von benannten Funktionsausdrücken..................... 49 Thema 15 Verlässliche Gültigkeitsbereiche von lokalen Funktionsdeklarationen....................................................... 53 Thema 16 Vermeiden Sie es, Variablen mit eval zu erstellen..................... 56 Thema 17 Verwenden Sie eval lieber indirekt................................... 57

viii Inhaltsverzeichnis 3 Funktionen........................................................... 61 Thema 18 Die Unterschiede zwischen Funktionen, Methoden und Konstruktoren.................................................. 61 Thema 19 Keine Angst vor Funktionen höherer Ordnung....................... 64 Thema 20 Rufen Sie Methoden mit benutzerdefiniertem Empfänger mit call auf.......................................................... 68 Thema 21 Rufen Sie variadische Funktionen mit apply auf...................... 70 Thema 22 Erstellen Sie variadische Funktionen mit arguments.................. 72 Thema 23 Ändern Sie niemals das arguments-objekt........................... 73 Thema 24 Speichern Sie Verweise auf arguments in einer Variable.............. 75 Thema 25 Extrahieren Sie Methoden mit festem Empfänger per bind........... 77 Thema 26 Nutzen Sie bind beim Currying...................................... 79 Thema 27 Kapseln Sie Code mit Closures, nicht mit Strings..................... 81 Thema 28 Verlassen Sie sich nicht auf die tostring-methode.................... 83 Thema 29 Vorsicht, wenn Sie den Call Stack inspizieren!........................ 84 4 Objekte und Prototypen............................................... 87 Thema 30 Achten Sie auf den Unterschied zwischen prototype, getprototypeof und proto..................................... 87 Thema 31 Verwenden Sie lieber Object.getPrototypeOf statt proto........ 91 Thema 32 Ändern Sie niemals proto!...................................... 92 Thema 33 Erstellen Sie Konstruktoren, die auch ohne new funktionieren........ 93 Thema 34 Speichern Sie Methoden mithilfe von Prototypen.................... 96 Thema 35 Speichern Sie private Daten mithilfe von Closures.................... 98 Thema 36 Speichern Sie den Instanzstatus nur in Instanzobjekten.............. 100 Thema 37 this sollten Sie kennen!.............................................. 103 Thema 38 Thema 39 Rufen Sie Superklassenkonstruktoren von Subklassenkonstruktoren aus auf............................... 106 Eigenschaftsnamen aus der Superklasse sollten Sie niemals wiederverwenden!.................................................. 110 Thema 40 Vermeiden Sie die Vererbung von Standardklassen.................. 112 Thema 41 Prototypen sind»richtige«implementierungen...................... 114 Thema 42 Das brauchen Sie nicht: Unbesonnenes Monkey-Patching............ 115 5 Arrays und Dictionaries................................................ 119 Thema 43 Erstellen Sie schlanke Dictionaries mit Object........................ 119 Thema 44 Schützen Sie sich mithilfe von Null-Prototypen vor einer Prototyp-Verunreinigung.................................. 123

Inhaltsverzeichnis ix Thema 45 Thema 46 Thema 47 Schützen Sie sich mit hasownproperty vor Prototyp-Verunreinigungen..................................... 124 Verwenden Sie für geordnete Collections lieber Arrays statt Dictionaries.................................................... 129 Fügen Sie niemals aufzählbare Eigenschaften zu Object.prototype hinzu!.......................................... 132 Thema 48 Ändern Sie Objekte nicht während einer Aufzählung................. 134 Thema 49 Verwenden Sie for-schleifen statt for...in-schleifen, wenn Sie über Arrays iterieren....................................... 139 Thema 50 Verwenden Sie lieber Iterationsmethoden als Schleifen............... 140 Thema 51 Generische Arraymethoden für arrayähnliche Objekte wiederverwenden................................................... 145 Thema 52 Verwenden Sie lieber Arrayliterale statt des Arraykonstruktors........ 148 6 Erstellung von Bibliotheken und APIs................................... 149 Thema 53 Bemühen Sie sich um eine einheitliche Schreibweise................. 149 Thema 54 Behandeln Sie»undefined«als»nicht vorhanden«.................... 151 Thema 55 Zu viele Parameter? Nutzen Sie Optionsobjekte!...................... 155 Thema 56 Vermeiden Sie unnötige Zustände................................... 160 Thema 57 Verwenden Sie strukturelle Typisierung für flexible Schnittstellen..... 164 Thema 58 Unterscheiden Sie Arrays und arrayähnliche Objekte................. 168 Thema 59 Vermeiden Sie übermäßige Typumwandlung........................ 172 Thema 60 Unterstützen Sie Method Chaining................................... 176 7 Nebenläufigkeit....................................................... 179 Thema 61 Blockieren Sie die Event Queue nicht, wenn I/O stattfindet........... 180 Thema 62 Verwenden Sie verschachtelte oder benannte Callbacks für die asynchrone Abarbeitung..................................... 183 Thema 63 Denken Sie an die Fehlerbehandlung!................................ 188 Thema 64 Nutzen Sie Rekursion für asynchrone Schleifen....................... 191 Thema 65 Blockieren Sie die Event Queue bei längeren Berechnungen nicht.... 195 Thema 66 Steuern Sie nebenläufige Operationen mit einem Zähler............. 199 Thema 67 Rufen Sie asynchrone Callbacks niemals synchron auf!................ 204 Thema 68 Verwenden Sie Promises für eine sauberere asynchrone Logik........ 206 Index................................................................. 211