JavaScript: The Definitive Guide

Master the World's Most-Used Programming Language
 
 
O'Reilly (Verlag)
  • erschienen am 14. Mai 2020
  • |
  • 706 Seiten
 
E-Book | ePUB mit Adobe-DRM | Systemvoraussetzungen
978-1-4919-5198-9 (ISBN)
 
For web developers and other programmers interested in using JavaScript, this bestselling book provides the most comprehensive JavaScript material on the market. The seventh edition represents a significant update, with new information for ECMAScript 2020, and new chapters on language-specific features.JavaScript: The Definitive Guide is ideal for experienced programmers who want to learn the programming language of the web, and for current JavaScript programmers who want to master it.
  • Englisch
  • Sebastopol
  • |
  • USA
  • 5,00 MB
978-1-4919-5198-9 (9781491951989)
weitere Ausgaben werden ermittelt
  • Intro
  • Preface
  • Conventions Used in This Book
  • Example Code
  • O'Reilly Online Learning
  • How to Contact Us
  • Acknowledgments
  • 1. Introduction to JavaScript
  • 1.1. Exploring JavaScript
  • 1.2. Hello World
  • 1.3. A Tour of JavaScript
  • 1.4. Example: Character Frequency Histograms
  • 1.5. Summary
  • 2. Lexical Structure
  • 2.1. The Text of a JavaScript Program
  • 2.2. Comments
  • 2.3. Literals
  • 2.4. Identifiers and Reserved Words
  • 2.4.1. Reserved Words
  • 2.5. Unicode
  • 2.5.1. Unicode Escape Sequences
  • 2.5.2. Unicode Normalization
  • 2.6. Optional Semicolons
  • 2.7. Summary
  • 3. Types, Values, and Variables
  • 3.1. Overview and Definitions
  • 3.2. Numbers
  • 3.2.1. Integer Literals
  • 3.2.2. Floating-Point Literals
  • 3.2.3. Arithmetic in JavaScript
  • 3.2.4. Binary Floating-Point and Rounding Errors
  • 3.2.5. Arbitrary Precision Integers with BigInt
  • 3.2.6. Dates and Times
  • 3.3. Text
  • 3.3.1. String Literals
  • 3.3.2. Escape Sequences in String Literals
  • 3.3.3. Working with Strings
  • 3.3.4. Template Literals
  • Tagged template literals
  • 3.3.5. Pattern Matching
  • 3.4. Boolean Values
  • 3.5. null and undefined
  • 3.6. Symbols
  • 3.7. The Global Object
  • 3.8. Immutable Primitive Values and Mutable Object References
  • 3.9. Type Conversions
  • 3.9.1. Conversions and Equality
  • 3.9.2. Explicit Conversions
  • 3.9.3. Object to Primitive Conversions
  • Object-to-boolean conversions
  • Object-to-string conversions
  • Object-to-number conversions
  • Special case operator conversions
  • The toString() and valueOf() methods
  • Object-to-primitive conversion algorithms
  • 3.10. Variable Declaration and Assignment
  • 3.10.1. Declarations with let and const
  • Variable and constant scope
  • Repeated declarations
  • Declarations and types
  • 3.10.2. Variable Declarations with var
  • 3.10.3. Destructuring Assignment
  • 3.11. Summary
  • 4. Expressions and Operators
  • 4.1. Primary Expressions
  • 4.2. Object and Array Initializers
  • 4.3. Function Definition Expressions
  • 4.4. Property Access Expressions
  • 4.4.1. Conditional Property Access
  • 4.5. Invocation Expressions
  • 4.5.1. Conditional Invocation
  • 4.6. Object Creation Expressions
  • 4.7. Operator Overview
  • 4.7.1. Number of Operands
  • 4.7.2. Operand and Result Type
  • 4.7.3. Operator Side Effects
  • 4.7.4. Operator Precedence
  • 4.7.5. Operator Associativity
  • 4.7.6. Order of Evaluation
  • 4.8. Arithmetic Expressions
  • 4.8.1. The + Operator
  • 4.8.2. Unary Arithmetic Operators
  • 4.8.3. Bitwise Operators
  • 4.9. Relational Expressions
  • 4.9.1. Equality and Inequality Operators
  • Strict equality
  • Equality with type conversion
  • 4.9.2. Comparison Operators
  • 4.9.3. The in Operator
  • 4.9.4. The instanceof Operator
  • 4.10. Logical Expressions
  • 4.10.1. Logical AND (&&)
  • 4.10.2. Logical OR (||)
  • 4.10.3. Logical NOT (!)
  • 4.11. Assignment Expressions
  • 4.11.1. Assignment with Operation
  • 4.12. Evaluation Expressions
  • 4.12.1. eval()
  • 4.12.2. Global eval()
  • 4.12.3. Strict eval()
  • 4.13. Miscellaneous Operators
  • 4.13.1. The Conditional Operator (?:)
  • 4.13.2. First-Defined (??)
  • 4.13.3. The typeof Operator
  • 4.13.4. The delete Operator
  • 4.13.5. The await Operator
  • 4.13.6. The void Operator
  • 4.13.7. The comma Operator (,)
  • 4.14. Summary
  • 5. Statements
  • 5.1. Expression Statements
  • 5.2. Compound and Empty Statements
  • 5.3. Conditionals
  • 5.3.1. if
  • 5.3.2. else if
  • 5.3.3. switch
  • 5.4. Loops
  • 5.4.1. while
  • 5.4.2. do/while
  • 5.4.3. for
  • 5.4.4. for/of
  • for/of with objects
  • for/of with strings
  • for/of with Set and Map
  • Asynchronous iteration with for/await
  • 5.4.5. for/in
  • 5.5. Jumps
  • 5.5.1. Labeled Statements
  • 5.5.2. break
  • 5.5.3. continue
  • 5.5.4. return
  • 5.5.5. yield
  • 5.5.6. throw
  • 5.5.7. try/catch/finally
  • 5.6. Miscellaneous Statements
  • 5.6.1. with
  • 5.6.2. debugger
  • 5.6.3. "use strict"
  • 5.7. Declarations
  • 5.7.1. const, let, and var
  • 5.7.2. function
  • 5.7.3. class
  • 5.7.4. import and export
  • 5.8. Summary of JavaScript Statements
  • 6. Objects
  • 6.1. Introduction to Objects
  • 6.2. Creating Objects
  • 6.2.1. Object Literals
  • 6.2.2. Creating Objects with new
  • 6.2.3. Prototypes
  • 6.2.4. Object.create()
  • 6.3. Querying and Setting Properties
  • 6.3.1. Objects As Associative Arrays
  • 6.3.2. Inheritance
  • 6.3.3. Property Access Errors
  • 6.4. Deleting Properties
  • 6.5. Testing Properties
  • 6.6. Enumerating Properties
  • 6.6.1. Property Enumeration Order
  • 6.7. Extending Objects
  • 6.8. Serializing Objects
  • 6.9. Object Methods
  • 6.9.1. The toString() Method
  • 6.9.2. The toLocaleString() Method
  • 6.9.3. The valueOf() Method
  • 6.9.4. The toJSON() Method
  • 6.10. Extended Object Literal Syntax
  • 6.10.1. Shorthand Properties
  • 6.10.2. Computed Property Names
  • 6.10.3. Symbols as Property Names
  • 6.10.4. Spread Operator
  • 6.10.5. Shorthand Methods
  • 6.10.6. Property Getters and Setters
  • 6.11. Summary
  • 7. Arrays
  • 7.1. Creating Arrays
  • 7.1.1. Array Literals
  • 7.1.2. The Spread Operator
  • 7.1.3. The Array() Constructor
  • 7.1.4. Array.of()
  • 7.1.5. Array.from()
  • 7.2. Reading and Writing Array Elements
  • 7.3. Sparse Arrays
  • 7.4. Array Length
  • 7.5. Adding and Deleting Array Elements
  • 7.6. Iterating Arrays
  • 7.7. Multidimensional Arrays
  • 7.8. Array Methods
  • 7.8.1. Array Iterator Methods
  • forEach()
  • map()
  • filter()
  • find() and findIndex()
  • every() and some()
  • reduce() and reduceRight()
  • 7.8.2. Flattening arrays with flat() and flatMap()
  • 7.8.3. Adding arrays with concat()
  • 7.8.4. Stacks and Queues with push(), pop(), shift(), and unshift()
  • 7.8.5. Subarrays with slice(), splice(), fill(), and copyWithin()
  • slice()
  • splice()
  • fill()
  • copyWithin()
  • 7.8.6. Array Searching and Sorting Methods
  • indexOf() and lastIndexOf()
  • includes()
  • sort()
  • reverse()
  • 7.8.7. Array to String Conversions
  • 7.8.8. Static Array Functions
  • 7.9. Array-Like Objects
  • 7.10. Strings as Arrays
  • 7.11. Summary
  • 8. Functions
  • 8.1. Defining Functions
  • 8.1.1. Function Declarations
  • 8.1.2. Function Expressions
  • 8.1.3. Arrow Functions
  • 8.1.4. Nested Functions
  • 8.2. Invoking Functions
  • 8.2.1. Function Invocation
  • 8.2.2. Method Invocation
  • 8.2.3. Constructor Invocation
  • 8.2.4. Indirect Invocation
  • 8.2.5. Implicit Function Invocation
  • 8.3. Function Arguments and Parameters
  • 8.3.1. Optional Parameters and Defaults
  • 8.3.2. Rest Parameters and Variable-Length Argument Lists
  • 8.3.3. The Arguments Object
  • 8.3.4. The Spread Operator for Function Calls
  • 8.3.5. Destructuring Function Arguments into Parameters
  • 8.3.6. Argument Types
  • 8.4. Functions as Values
  • 8.4.1. Defining Your Own Function Properties
  • 8.5. Functions as Namespaces
  • 8.6. Closures
  • 8.7. Function Properties, Methods, and Constructor
  • 8.7.1. The length Property
  • 8.7.2. The name Property
  • 8.7.3. The prototype Property
  • 8.7.4. The call() and apply() Methods
  • 8.7.5. The bind() Method
  • 8.7.6. The toString() Method
  • 8.7.7. The Function() Constructor
  • 8.8. Functional Programming
  • 8.8.1. Processing Arrays with Functions
  • 8.8.2. Higher-Order Functions
  • 8.8.3. Partial Application of Functions
  • 8.8.4. Memoization
  • 8.9. Summary
  • 9. Classes
  • 9.1. Classes and Prototypes
  • 9.2. Classes and Constructors
  • 9.2.1. Constructors, Class Identity, and instanceof
  • 9.2.2. The constructor Property
  • 9.3. Classes with the class Keyword
  • 9.3.1. Static Methods
  • 9.3.2. Getters, Setters, and other Method Forms
  • 9.3.3. Public, Private, and Static Fields
  • 9.3.4. Example: A Complex Number Class
  • 9.4. Adding Methods to Existing Classes
  • 9.5. Subclasses
  • 9.5.1. Subclasses and Prototypes
  • 9.5.2. Subclasses with extends and super
  • 9.5.3. Delegation Instead of Inheritance
  • 9.5.4. Class Hierarchies and Abstract Classes
  • 9.6. Summary
  • 10. Modules
  • 10.1. Modules with Classes, Objects, and Closures
  • 10.1.1. Automating Closure-Based Modularity
  • 10.2. Modules in Node
  • 10.2.1. Node Exports
  • 10.2.2. Node Imports
  • 10.2.3. Node-Style Modules on the Web
  • 10.3. Modules in ES6
  • 10.3.1. ES6 Exports
  • 10.3.2. ES6 Imports
  • 10.3.3. Imports and Exports with Renaming
  • 10.3.4. Re-Exports
  • 10.3.5. JavaScript Modules on the Web
  • 10.3.6. Dynamic Imports with import()
  • 10.3.7. import.meta.url
  • 10.4. Summary
  • 11. The JavaScript Standard Library
  • 11.1. Sets and Maps
  • 11.1.1. The Set Class
  • 11.1.2. The Map Class
  • 11.1.3. WeakMap and WeakSet
  • 11.2. Typed Arrays and Binary Data
  • 11.2.1. Typed Array Types
  • 11.2.2. Creating Typed Arrays
  • 11.2.3. Using Typed Arrays
  • 11.2.4. Typed Array Methods and Properties
  • 11.2.5. DataView and Endianness
  • 11.3. Pattern Matching with Regular Expressions
  • 11.3.1. Defining Regular Expressions
  • Literal characters
  • Character classes
  • Repetition
  • Non-greedy repetition
  • Alternation, grouping, and references
  • Specifying match position
  • Flags
  • 11.3.2. String Methods for Pattern Matching
  • search()
  • replace()
  • match()
  • matchAll()
  • split()
  • 11.3.3. The RegExp Class
  • RegExp properties
  • test()
  • exec()
  • 11.4. Dates and Times
  • 11.4.1. Timestamps
  • 11.4.2. Date Arithmetic
  • 11.4.3. Formatting and Parsing Date Strings
  • 11.5. Error Classes
  • 11.6. JSON Serialization and Parsing
  • 11.6.1. JSON Customizations
  • 11.7. The Internationalization API
  • 11.7.1. Formatting Numbers
  • 11.7.2. Formatting Dates and Times
  • 11.7.3. Comparing Strings
  • 11.8. The Console API
  • 11.8.1. Formatted Output with Console
  • 11.9. URL APIs
  • 11.9.1. Legacy URL Functions
  • 11.10. Timers
  • 11.11. Summary
  • 12. Iterators and Generators
  • 12.1. How Iterators Work
  • 12.2. Implementing Iterable Objects
  • 12.2.1. "Closing" an Iterator: The Return Method
  • 12.3. Generators
  • 12.3.1. Generator Examples
  • 12.3.2. yield* and Recursive Generators
  • 12.4. Advanced Generator Features
  • 12.4.1. The Return Value of a Generator Function
  • 12.4.2. The Value of a yield Expression
  • 12.4.3. The return() and throw() Methods of a Generator
  • 12.4.4. A Final Note About Generators
  • 12.5. Summary
  • 13. Asynchronous JavaScript
  • 13.1. Asynchronous Programming with Callbacks
  • 13.1.1. Timers
  • 13.1.2. Events
  • 13.1.3. Network Events
  • 13.1.4. Callbacks and Events in Node
  • 13.2. Promises
  • 13.2.1. Using Promises
  • Handling errors with Promises
  • 13.2.2. Chaining Promises
  • 13.2.3. Resolving Promises
  • 13.2.4. More on Promises and Errors
  • The catch and finally methods
  • 13.2.5. Promises in Parallel
  • 13.2.6. Making Promises
  • Promises based on other Promises
  • Promises based on synchronous values
  • Promises from scratch
  • 13.2.7. Promises in Sequence
  • 13.3. async and await
  • 13.3.1. await Expressions
  • 13.3.2. async Functions
  • 13.3.3. Awaiting Multiple Promises
  • 13.3.4. Implementation Details
  • 13.4. Asynchronous Iteration
  • 13.4.1. The for/await Loop
  • 13.4.2. Asynchronous Iterators
  • 13.4.3. Asynchronous Generators
  • 13.4.4. Implementing Asynchronous Iterators
  • 13.5. Summary
  • 14. Metaprogramming
  • 14.1. Property Attributes
  • 14.2. Object Extensibility
  • 14.3. The prototype Attribute
  • 14.4. Well-Known Symbols
  • 14.4.1. Symbol.iterator and Symbol.asyncIterator
  • 14.4.2. Symbol.hasInstance
  • 14.4.3. Symbol.toStringTag
  • 14.4.4. Symbol.species
  • 14.4.5. Symbol.isConcatSpreadable
  • 14.4.6. Pattern-Matching Symbols
  • 14.4.7. Symbol.toPrimitive
  • 14.4.8. Symbol.unscopables
  • 14.5. Template Tags
  • 14.6. The Reflect API
  • 14.7. Proxy Objects
  • 14.7.1. Proxy Invariants
  • 14.8. Summary
  • 15. JavaScript in Web Browsers
  • 15.1. Web Programming Basics
  • 15.1.1. JavaScript in HTML &script& Tags
  • Modules
  • Specifying script type
  • When scripts run: async and deferred
  • Loading scripts on demand
  • 15.1.2. The Document Object Model
  • 15.1.3. The Global Object in Web Browsers
  • 15.1.4. Scripts Share a Namespace
  • 15.1.5. Execution of JavaScript Programs
  • Client-side JavaScript threading model
  • Client-side JavaScript timeline
  • 15.1.6. Program Input and Output
  • 15.1.7. Program Errors
  • 15.1.8. The Web Security Model
  • What JavaScript can't do
  • The same-origin policy
  • Cross-site scripting
  • 15.2. Events
  • 15.2.1. Event Categories
  • 15.2.2. Registering Event Handlers
  • Setting event handler properties
  • Setting event handler attributes
  • addEventListener()
  • 15.2.3. Event Handler Invocation
  • Event handler argument
  • Event handler context
  • Handler return value
  • Invocation order
  • 15.2.4. Event Propagation
  • 15.2.5. Event Cancellation
  • 15.2.6. Dispatching Custom Events
  • 15.3. Scripting Documents
  • 15.3.1. Selecting Document Elements
  • Selecting elements with CSS selectors
  • Other element selection methods
  • Preselected elements
  • 15.3.2. Document Structure and Traversal
  • Documents as trees of nodes
  • 15.3.3. Attributes
  • HTML attributes as element properties
  • The class attribute
  • Dataset attributes
  • 15.3.4. Element Content
  • Element content as HTML
  • Element content as plain text
  • 15.3.5. Creating, Inserting, and Deleting Nodes
  • 15.3.6. Example: Generating a Table of Contents
  • 15.4. Scripting CSS
  • 15.4.1. CSS Classes
  • 15.4.2. Inline Styles
  • 15.4.3. Computed Styles
  • 15.4.4. Scripting Stylesheets
  • 15.4.5. CSS Animations and Events
  • 15.5. Document Geometry and Scrolling
  • 15.5.1. Document Coordinates and Viewport Coordinates
  • 15.5.2. Querying the Geometry of an Element
  • 15.5.3. Determining the Element at a Point
  • 15.5.4. Scrolling
  • 15.5.5. Viewport Size, Content Size, and Scroll Position
  • 15.6. Web Components
  • 15.6.1. Using Web Components
  • 15.6.2. HTML Templates
  • 15.6.3. Custom Elements
  • 15.6.4. Shadow DOM
  • Shadow DOM encapsulation
  • Shadow DOM slots and light DOM children
  • Shadow DOM API
  • 15.6.5. Example: a &search-box& Web Component
  • 15.7. SVG: Scalable Vector Graphics
  • 15.7.1. SVG in HTML
  • 15.7.2. Scripting SVG
  • 15.7.3. Creating SVG Images with JavaScript
  • 15.8. Graphics in a &canvas&
  • 15.8.1. Paths and Polygons
  • 15.8.2. Canvas Dimensions and Coordinates
  • 15.8.3. Graphics Attributes
  • Line styles
  • Colors, patterns, and gradients
  • Text styles
  • Shadows
  • Translucency and compositing
  • Saving and restoring graphics state
  • 15.8.4. Canvas Drawing Operations
  • Rectangles
  • Curves
  • Text
  • Images
  • 15.8.5. Coordinate System Transforms
  • Understanding transformations mathematically
  • Transformation example
  • 15.8.6. Clipping
  • 15.8.7. Pixel Manipulation
  • 15.9. Audio APIs
  • 15.9.1. The Audio() Constructor
  • 15.9.2. The WebAudio API
  • 15.10. Location, Navigation, and History
  • 15.10.1. Loading New Documents
  • 15.10.2. Browsing History
  • 15.10.3. History Management with hashchange Events
  • 15.10.4. History Management with pushState()
  • 15.11. Networking
  • 15.11.1. fetch()
  • HTTP status codes, response headers, and network errors
  • Setting request parameters
  • Setting request headers
  • Parsing response bodies
  • Streaming response bodies
  • Specifying the request method and request body
  • File upload with fetch()
  • Cross-origin requests
  • Aborting a request
  • Miscellaneous request options
  • 15.11.2. Server-Sent Events
  • 15.11.3. WebSockets
  • Creating, connecting, and disconnecting WebSockets
  • Sending messages over a WebSocket
  • Receiving messages from a WebSocket
  • Protocol negotiation
  • 15.12. Storage
  • 15.12.1. localStorage and sessionStorage
  • Storage lifetime and scope
  • Storage events
  • 15.12.2. Cookies
  • Reading cookies
  • Cookie attributes: lifetime and scope
  • Storing cookies
  • 15.12.3. IndexedDB
  • 15.13. Worker Threads and Messaging
  • 15.13.1. Worker Objects
  • 15.13.2. The Global Object in Workers
  • 15.13.3. Importing Code into a Worker
  • 15.13.4. Worker Execution Model
  • Errors in Workers
  • 15.13.5. postMessage(), MessagePorts, and MessageChannels
  • 15.13.6. Cross-Origin Messaging with postMessage()
  • 15.14. Example: The Mandelbrot Set
  • 15.15. Summary and Suggestions for Further Reading
  • 15.15.1. HTML and CSS
  • 15.15.2. Performance
  • 15.15.3. Security
  • 15.15.4. WebAssembly
  • 15.15.5. More Document and Window Features
  • 15.15.6. Events
  • 15.15.7. Progressive Web Apps and Service Workers
  • 15.15.8. Mobile Device APIs
  • 15.15.9. Binary APIs
  • 15.15.10. Media APIs
  • 15.15.11. Cryptography and Related APIs
  • 16. Server-Side JavaScript with Node
  • 16.1. Node Programming Basics
  • 16.1.1. Console Output
  • 16.1.2. Command-Line Arguments and Environment Variables
  • 16.1.3. Program Life Cycle
  • 16.1.4. Node Modules
  • 16.1.5. The Node Package Manager
  • 16.2. Node Is Asynchronous by Default
  • 16.3. Buffers
  • 16.4. Events and EventEmitter
  • 16.5. Streams
  • 16.5.1. Pipes
  • 16.5.2. Asynchronous Iteration
  • 16.5.3. Writing to Streams and Handling Backpressure
  • 16.5.4. Reading Streams with Events
  • Flowing mode
  • Paused mode
  • 16.6. Process, CPU, and Operating System Details
  • 16.7. Working with Files
  • 16.7.1. Paths, File Descriptors, and FileHandles
  • 16.7.2. Reading Files
  • 16.7.3. Writing Files
  • 16.7.4. File Operations
  • 16.7.5. File Metadata
  • 16.7.6. Working with Directories
  • 16.8. HTTP Clients and Servers
  • 16.9. Non-HTTP Network Servers and Clients
  • 16.10. Working with Child Processes
  • 16.10.1. execSync() and execFileSync()
  • 16.10.2. exec() and execFile()
  • 16.10.3. spawn()
  • 16.10.4. fork()
  • 16.11. Worker Threads
  • 16.11.1. Creating Workers and Passing Messages
  • 16.11.2. The Worker Execution Environment
  • 16.11.3. Communication Channels and MessagePorts
  • 16.11.4. Transferring MessagePorts and Typed Arrays
  • 16.11.5. Sharing Typed Arrays Between Threads
  • 16.12. Summary
  • 17. JavaScript Tools and Extensions
  • 17.1. Linting with ESLint
  • 17.2. JavaScript Formatting with Prettier
  • 17.3. Unit Testing with Jest
  • 17.4. Package Management with npm
  • 17.5. Code Bundling
  • 17.6. Transpilation with Babel
  • 17.7. JSX: Markup Expressions in JavaScript
  • 17.8. Type Checking with Flow
  • 17.8.1. Installing and Running Flow
  • 17.8.2. Using Type Annotations
  • 17.8.3. Class Types
  • 17.8.4. Object Types
  • 17.8.5. Type Aliases
  • 17.8.6. Array Types
  • 17.8.7. Other Parameterized Types
  • 17.8.8. Read-Only Types
  • 17.8.9. Function Types
  • 17.8.10. Union Types
  • 17.8.11. Enumerated Types and Discriminated Unions
  • 17.9. Summary
  • Index

Dateiformat: ePUB
Kopierschutz: Adobe-DRM (Digital Rights Management)

Systemvoraussetzungen:

Computer (Windows; MacOS X; Linux): Installieren Sie bereits vor dem Download die kostenlose Software Adobe Digital Editions (siehe E-Book Hilfe).

Tablet/Smartphone (Android; iOS): Installieren Sie bereits vor dem Download die kostenlose App Adobe Digital Editions (siehe E-Book Hilfe).

E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m. (nicht Kindle)

Das Dateiformat ePUB ist sehr gut für Romane und Sachbücher geeignet - also für "fließenden" Text ohne komplexes Layout. Bei E-Readern oder Smartphones passt sich der Zeilen- und Seitenumbruch automatisch den kleinen Displays an. Mit Adobe-DRM wird hier ein "harter" Kopierschutz verwendet. Wenn die notwendigen Voraussetzungen nicht vorliegen, können Sie das E-Book leider nicht öffnen. Daher müssen Sie bereits vor dem Download Ihre Lese-Hardware vorbereiten.

Bitte beachten Sie bei der Verwendung der Lese-Software Adobe Digital Editions: wir empfehlen Ihnen unbedingt nach Installation der Lese-Software diese mit Ihrer persönlichen Adobe-ID zu autorisieren!

Weitere Informationen finden Sie in unserer E-Book Hilfe.


Download (sofort verfügbar)

48,49 €
inkl. 5% MwSt.
Download / Einzel-Lizenz
ePUB mit Adobe-DRM
siehe Systemvoraussetzungen
E-Book bestellen