Javascript Notes for Professionals

Javascript Notes for Professionals

Author
Goalkicker.com
Language
english
File Type
pdf
File Size
4.1 MiB

Content listAboutChapter 1: Getting started with JavaScriptSection 1.1: Using console.log()Section 1.2: Using the DOM APISection 1.3: Using window.alert()Section 1.4: Using window.prompt()Section 1.5: Using window.confirm()Section 1.6: Using the DOM API (with graphical text: Canvas, SVG, or image file)Chapter 2: JavaScript VariablesSection 2.1: Defining a VariableSection 2.2: Using a VariableSection 2.3: Types of VariablesSection 2.4: Arrays and ObjectsChapter 3: Built-in ConstantsSection 3.1: nullSection 3.2: Testing for NaN using isNaN()Section 3.3: NaNSection 3.4: undefined and nullSection 3.5: Infinity and -InfinitySection 3.6: Number constantsSection 3.7: Operations that return NaNSection 3.8: Math library functions that return NaNChapter 4: CommentsSection 4.1: Using CommentsSection 4.2: Using HTML comments in JavaScript (Bad practice)Chapter 5: ConsoleSection 5.1: Measuring time - console.time()Section 5.2: Formatting console outputSection 5.3: Printing to a browser's debugging consoleSection 5.4: Including a stack trace when logging - console.trace()Section 5.5: Tabulating values - console.table()Section 5.6: Counting - console.count()Section 5.7: Clearing the console - console.clear()Section 5.8: Displaying objects and XML interactively - console.dir(), console.dirxml()Section 5.9: Debugging with assertions - console.assert()Chapter 6: Datatypes in JavaScriptSection 6.1: typeofSection 6.2: Finding an object's classSection 6.3: Getting object type by constructor nameChapter 7: StringsSection 7.1: Basic Info and String ConcatenationSection 7.2: Reverse StringSection 7.3: Comparing Strings LexicographicallySection 7.4: Access character at index in stringSection 7.5: Escaping quotesSection 7.6: Word CounterSection 7.7: Trim whitespaceSection 7.8: Splitting a string into an arraySection 7.9: Strings are unicodeSection 7.10: Detecting a stringSection 7.11: Substrings with sliceSection 7.12: Character codeSection 7.13: String Representations of NumbersSection 7.14: String Find and Replace FunctionsSection 7.15: Find the index of a substring inside a stringSection 7.16: String to Upper CaseSection 7.17: String to Lower CaseSection 7.18: Repeat a StringChapter 8: DateSection 8.1: Create a new Date objectSection 8.2: Convert to a string formatSection 8.3: Creating a Date from UTCSection 8.4: Formatting a JavaScript dateSection 8.5: Get the number of milliseconds elapsed since 1 January 1970 00:00:00 UTCSection 8.6: Get the current time and dateSection 8.7: Increment a Date ObjectSection 8.8: Convert to JSONChapter 9: Date ComparisonSection 9.1: Comparing Date valuesSection 9.2: Date Dierence CalculationChapter 10: Comparison OperationsSection 10.1: Abstract equality / inequality and type conversionSection 10.2: NaN Property of the Global ObjectSection 10.3: Short-circuiting in boolean operatorsSection 10.4: Null and UndefinedSection 10.5: Abstract Equality (==)Section 10.6: Logic Operators with BooleansSection 10.7: Automatic Type ConversionsSection 10.8: Logic Operators with Non-boolean values (boolean coercion)Section 10.9: Empty ArraySection 10.10: Equality comparison operationsSection 10.11: Relational operators ( =)Section 10.12: InequalitySection 10.13: List of Comparison OperatorsSection 10.14: Grouping multiple logic statementsSection 10.15: Bit fields to optimise comparison of multi state dataChapter 11: ConditionsSection 11.1: Ternary operatorsSection 11.2: Switch statementSection 11.3: If / Else If / Else ControlSection 11.4: StrategySection 11.5: Using || and && short circuitingChapter 12: ArraysSection 12.1: Converting Array-like Objects to ArraysSection 12.2: Reducing valuesSection 12.3: Mapping valuesSection 12.4: Filtering Object ArraysSection 12.5: Sorting ArraysSection 12.6: IterationSection 12.7: Destructuring an arraySection 12.8: Removing duplicate elementsSection 12.9: Array comparisonSection 12.10: Reversing arraysSection 12.11: Shallow cloning an arraySection 12.12: Concatenating ArraysSection 12.13: Merge two array as key value pairSection 12.14: Array spread / restSection 12.15: Filtering valuesSection 12.16: Searching an ArraySection 12.17: Convert a String to an ArraySection 12.18: Removing items from an arraySection 12.19: Removing all elementsSection 12.20: Finding the minimum or maximum elementSection 12.21: Standard array initializationSection 12.22: Joining array elements in a stringSection 12.23: Removing/Adding elements using splice()Section 12.24: The entries() methodSection 12.25: Remove value from arraySection 12.26: Flattening ArraysSection 12.27: Append / Prepend items to ArraySection 12.28: Object keys and values to arraySection 12.29: Logical connective of valuesSection 12.30: Checking if an object is an ArraySection 12.31: Insert an item into an array at a specific indexSection 12.32: Sorting multidimensional arraySection 12.33: Test all array items for equalitySection 12.34: Copy part of an ArrayChapter 13: ObjectsSection 13.1: Shallow cloningSection 13.2: Object.freezeSection 13.3: Object cloningSection 13.4: Object properties iterationSection 13.5: Object.assignSection 13.6: Object rest/spread (...)Section 13.7: Object.definePropertySection 13.8: Accesor properties (get and set)Section 13.9: Dynamic / variable property namesSection 13.10: Arrays are ObjectsSection 13.11: Object.sealSection 13.12: Convert object's values to arraySection 13.13: Retrieving properties from an objectSection 13.14: Read-Only propertySection 13.15: Non enumerable propertySection 13.16: Lock property descriptionSection 13.17: Object.getOwnPropertyDescriptorSection 13.18: Descriptors and Named PropertiesSection 13.19: Object.keysSection 13.20: Properties with special characters or reserved wordsSection 13.21: Creating an Iterable objectSection 13.22: Iterating over Object entries - Object.entries()Section 13.23: Object.values()Chapter 14: Arithmetic (Math)Section 14.1: ConstantsSection 14.2: Remainder / Modulus (%)Section 14.3: RoundingSection 14.4: TrigonometrySection 14.5: Bitwise operatorsSection 14.6: Incrementing (++)Section 14.7: Exponentiation (Math.pow() or **)Section 14.8: Random Integers and FloatsSection 14.9: Addition (+)Section 14.10: Little / Big endian for typed arrays when using bitwise operatorsSection 14.11: Get Random Between Two NumbersSection 14.12: Simulating events with dierent probabilitiesSection 14.13: Subtraction (-)Section 14.14: Multiplication (*)Section 14.15: Getting maximum and minimumSection 14.16: Restrict Number to Min/Max RangeSection 14.17: Ceiling and FloorSection 14.18: Getting roots of a numberSection 14.19: Random with gaussian distributionSection 14.20: Math.atan2 to find directionSection 14.21: Sin & Cos to create a vector given direction & distanceSection 14.22: Math.hypotSection 14.23: Periodic functions using Math.sinSection 14.24: Division (/)Section 14.25: Decrementing (--)Chapter 15: Bitwise operatorsSection 15.1: Bitwise operatorsSection 15.2: Shift OperatorsChapter 16: Constructor functionsSection 16.1: Declaring a constructor functionChapter 17: Declarations and AssignmentsSection 17.1: Modifying constantsSection 17.2: Declaring and initializing constantsSection 17.3: DeclarationSection 17.4: UndefinedSection 17.5: Data TypesSection 17.6: Mathematic operations and assignmentSection 17.7: AssignmentChapter 18: LoopsSection 18.1: Standard "for" loopsSection 18.2: "for ... of" loopSection 18.3: "for ... in" loopSection 18.4: "while" LoopsSection 18.5: "continue" a loopSection 18.6: Break specific nested loopsSection 18.7: "do ... while" loopSection 18.8: Break and continue labelsChapter 19: FunctionsSection 19.1: Function ScopingSection 19.2: CurryingSection 19.3: Immediately Invoked Function ExpressionsSection 19.4: Named FunctionsSection 19.5: Binding `this` and argumentsSection 19.6: Functions with an Unknown Number of Arguments (variadic functions)Section 19.7: Anonymous FunctionSection 19.8: Default parametersSection 19.9: Call and applySection 19.10: Partial ApplicationSection 19.11: Passing arguments by reference or valueSection 19.12: Function Arguments, "arguments" object, rest and spread parametersSection 19.13: Function CompositionSection 19.14: Get the name of a function objectSection 19.15: Recursive FunctionSection 19.16: Using the Return StatementSection 19.17: Functions as a variableChapter 20: Functional JavaScriptSection 20.1: Higher-Order FunctionsSection 20.2: Identity MonadSection 20.3: Pure FunctionsSection 20.4: Accepting Functions as ArgumentsChapter 21: Prototypes, objectsSection 21.1: Creation and initialising PrototypeChapter 22: ClassesSection 22.1: Class ConstructorSection 22.2: Class InheritanceSection 22.3: Static MethodsSection 22.4: Getters and SettersSection 22.5: Private MembersSection 22.6: MethodsSection 22.7: Dynamic Method NamesSection 22.8: Managing Private Data with ClassesSection 22.9: Class Name bindingChapter 23: NamespacingSection 23.1: Namespace by direct assignmentSection 23.2: Nested NamespacesChapter 24: Context (this)Section 24.1: this with simple objectsSection 24.2: Saving this for use in nested functions / objectsSection 24.3: Binding function contextSection 24.4: this in constructor functionsChapter 25: Setters and GettersSection 25.1: Defining a Setter/Getter Using Object.definePropertySection 25.2: Defining an Setter/Getter in a Newly Created ObjectSection 25.3: Defining getters and setters in ES6 classChapter 26: EventsSection 26.1: Page, DOM and Browser loadingChapter 27: InheritanceSection 27.1: Standard function prototypeSection 27.2: Dierence between Object.key and Object.prototype.keySection 27.3: Prototypal inheritanceSection 27.4: Pseudo-classical inheritanceSection 27.5: Setting an Object's prototypeChapter 28: Method ChainingSection 28.1: Chainable object design and chainingSection 28.2: Method ChainingChapter 29: CallbacksSection 29.1: Simple Callback Usage ExamplesSection 29.2: Continuation (synchronous and asynchronous)Section 29.3: What is a callback?Section 29.4: Callbacks and `this`Section 29.5: Callback using Arrow functionSection 29.6: Error handling and control-flow branchingChapter 30: Intervals and TimeoutsSection 30.1: Recursive setTimeoutSection 30.2: IntervalsSection 30.3: IntervalsSection 30.4: Removing intervalsSection 30.5: Removing timeoutsSection 30.6: setTimeout, order of operations, clearTimeoutChapter 31: Regular expressionsSection 31.1: Creating a RegExp ObjectSection 31.2: RegExp FlagsSection 31.3: Check if string contains pattern using .test()Section 31.4: Matching With .exec()Section 31.5: Using RegExp With StringsSection 31.6: RegExp GroupsSection 31.7: Replacing string match with a callback functionSection 31.8: Using Regex.exec() with parentheses regex to extract matches of a stringChapter 32: CookiesSection 32.1: Test if cookies are enabledSection 32.2: Adding and Setting CookiesSection 32.3: Reading cookiesSection 32.4: Removing cookiesChapter 33: Web StorageSection 33.1: Using localStorageSection 33.2: Simpler way of handling StorageSection 33.3: Storage eventsSection 33.4: sessionStorageSection 33.5: localStorage lengthSection 33.6: Error conditionsSection 33.7: Clearing storageSection 33.8: Remove Storage ItemChapter 34: Data attributesSection 34.1: Accessing data attributesChapter 35: JSONSection 35.1: JSON versus JavaScript literalsSection 35.2: Parsing with a reviver functionSection 35.3: Serializing a valueSection 35.4: Serializing and restoring class instancesSection 35.5: Serializing with a replacer functionSection 35.6: Parsing a simple JSON stringSection 35.7: Cyclic object valuesChapter 36: AJAXSection 36.1: Sending and Receiving JSON Data via POSTSection 36.2: Add an AJAX preloaderSection 36.3: Displaying the top JavaScript questions of the month from Stack Overflow's APISection 36.4: Using GET with parametersSection 36.5: Check if a file exists via a HEAD requestSection 36.6: Using GET and no parametersSection 36.7: Listening to AJAX events at a global levelChapter 37: EnumerationsSection 37.1: Enum definition using Object.freeze()Section 37.2: Alternate definitionSection 37.3: Printing an enum variableSection 37.4: Implementing Enums Using SymbolsSection 37.5: Automatic Enumeration ValueChapter 38: MapSection 38.1: Creating a MapSection 38.2: Clearing a MapSection 38.3: Removing an element from a MapSection 38.4: Checking if a key exists in a MapSection 38.5: Iterating MapsSection 38.6: Getting and setting elementsSection 38.7: Getting the number of elements of a MapChapter 39: TimestampsSection 39.1: High-resolution timestampsSection 39.2: Get Timestamp in SecondsSection 39.3: Low-resolution timestampsSection 39.4: Support for legacy browsersChapter 40: Unary OperatorsSection 40.1: OverviewSection 40.2: The typeof operatorSection 40.3: The delete operatorSection 40.4: The unary plus operator (+)Section 40.5: The void operatorSection 40.6: The unary negation operator (-)Section 40.7: The bitwise NOT operator (~)Section 40.8: The logical NOT operator (!)Chapter 41: GeneratorsSection 41.1: Generator FunctionsSection 41.2: Sending Values to GeneratorSection 41.3: Delegating to other GeneratorSection 41.4: IterationSection 41.5: Async flow with generatorsSection 41.6: Iterator-Observer interfaceChapter 42: PromisesSection 42.1: IntroductionSection 42.2: Promise chainingSection 42.3: Waiting for multiple concurrent promisesSection 42.4: Reduce an array to chained promisesSection 42.5: Waiting for the first of multiple concurrent promisesSection 42.6: "Promisifying" functions with callbacksSection 42.7: Error HandlingSection 42.8: Reconciling synchronous and asynchronous operationsSection 42.9: Delay function callSection 42.10: "Promisifying" valuesSection 42.11: Using ES2017 async/awaitSection 42.12: Performing cleanup with finally()Section 42.13: forEach with promisesSection 42.14: Asynchronous API requestChapter 43: SetSection 43.1: Creating a SetSection 43.2: Adding a value to a SetSection 43.3: Removing value from a setSection 43.4: Checking if a value exist in a setSection 43.5: Clearing a SetSection 43.6: Getting set lengthSection 43.7: Converting Sets to arraysSection 43.8: Intersection and dierence in SetsSection 43.9: Iterating SetsChapter 44: Modals - PromptsSection 44.1: About User PromptsSection 44.2: Persistent Prompt ModalSection 44.3: Confirm to Delete elementSection 44.4: Usage of alert()Section 44.5: Usage of prompt()Chapter 45: execCommand and contenteditableSection 45.1: Listening to Changes of contenteditableSection 45.2: Getting startedSection 45.3: Copy to clipboard from textarea using execCommand("copy")Section 45.4: FormattingChapter 46: HistorySection 46.1: history.pushState()Section 46.2: history.replaceState()Section 46.3: Load a specific URL from the history listChapter 47: Navigator ObjectSection 47.1: Get some basic browser data and return it as a JSON objectChapter 48: BOM (Browser Object Model)Section 48.1: IntroductionSection 48.2: Window Object PropertiesSection 48.3: Window Object MethodsChapter 49: The Event LoopSection 49.1: The event loop in a web browserSection 49.2: Asynchronous operations and the event loopChapter 50: Strict modeSection 50.1: For entire scriptsSection 50.2: For functionsSection 50.3: Changes to propertiesSection 50.4: Changes to global propertiesSection 50.5: Duplicate ParametersSection 50.6: Function scoping in strict modeSection 50.7: Behaviour of a function's arguments listSection 50.8: Non-Simple parameter listsChapter 51: Custom ElementsSection 51.1: Extending Native ElementsSection 51.2: Registering New ElementsChapter 52: Data ManipulationSection 52.1: Format numbers as moneySection 52.2: Extract extension from file nameSection 52.3: Set object property given its string nameChapter 53: Binary DataSection 53.1: Getting binary representation of an image fileSection 53.2: Converting between Blobs and ArrayBuersSection 53.3: Manipulating ArrayBuers with DataViewsSection 53.4: Creating a TypedArray from a Base64 stringSection 53.5: Using TypedArraysSection 53.6: Iterating through an arrayBuerChapter 54: Template LiteralsSection 54.1: Basic interpolation and multiline stringsSection 54.2: Tagged stringsSection 54.3: Raw stringsSection 54.4: Templating HTML With Template StringsSection 54.5: IntroductionChapter 55: FetchSection 55.1: Getting JSON dataSection 55.2: Set Request HeadersSection 55.3: POST DataSection 55.4: Send cookiesSection 55.5: GlobalFetchSection 55.6: Using Fetch to Display Questions from the Stack Overflow APIChapter 56: ScopeSection 56.1: ClosuresSection 56.2: HoistingSection 56.3: Dierence between var and letSection 56.4: Apply and Call syntax and invocationSection 56.5: Arrow function invocationSection 56.6: Bound invocationSection 56.7: Method invocationSection 56.8: Anonymous invocationSection 56.9: Constructor invocationSection 56.10: Using let in loops instead of var (click handlers example)Chapter 57: ModulesSection 57.1: Defining a moduleSection 57.2: Default exportsSection 57.3: Importing named members from another moduleSection 57.4: Importing an entire moduleSection 57.5: Importing named members with aliasesSection 57.6: Importing with side eectsSection 57.7: Exporting multiple named membersChapter 58: ScreenSection 58.1: Getting the screen resolutionSection 58.2: Getting the “available” area of the screenSection 58.3: Page width and heightSection 58.4: Window innerWidth and innerHeight PropertiesSection 58.5: Getting color information about the screenChapter 59: Variable coercion/conversionSection 59.1: Double Negation (!!x)Section 59.2: Implicit conversionSection 59.3: Converting to booleanSection 59.4: Converting a string to a numberSection 59.5: Converting a number to a stringSection 59.6: Primitive to Primitive conversion tableSection 59.7: Convert an array to a stringSection 59.8: Array to String using array methodsSection 59.9: Converting a number to a booleanSection 59.10: Converting a string to a booleanSection 59.11: Integer to FloatSection 59.12: Float to IntegerSection 59.13: Convert string to floatChapter 60: Destructuring assignmentSection 60.1: Destructuring ObjectsSection 60.2: Destructuring function argumentsSection 60.3: Nested DestructuringSection 60.4: Destructuring ArraysSection 60.5: Destructuring inside variablesSection 60.6: Default Value While DestructuringSection 60.7: Renaming Variables While DestructuringChapter 61: WebSocketsSection 61.1: Working with string messagesSection 61.2: Establish a web socket connectionSection 61.3: Working with binary messagesSection 61.4: Making a secure web socket connectionChapter 62: Arrow FunctionsSection 62.1: IntroductionSection 62.2: Lexical Scoping & Binding (Value of "this")Section 62.3: Arguments ObjectSection 62.4: Implicit ReturnSection 62.5: Arrow functions as a constructorSection 62.6: Explicit ReturnChapter 63: WorkersSection 63.1: Web WorkerSection 63.2: A simple service workerSection 63.3: Register a service workerSection 63.4: Communicating with a Web WorkerSection 63.5: Terminate a workerSection 63.6: Populating your cacheSection 63.7: Dedicated Workers and Shared WorkersChapter 64: requestAnimationFrameSection 64.1: Use requestAnimationFrame to fade in elementSection 64.2: Keeping CompatibilitySection 64.3: Cancelling an AnimationChapter 65: Creational Design PatternsSection 65.1: Factory FunctionsSection 65.2: Factory with CompositionSection 65.3: Module and Revealing Module PatternsSection 65.4: Prototype PatternSection 65.5: Singleton PatternSection 65.6: Abstract Factory PatternChapter 66: Detecting browserSection 66.1: Feature Detection MethodSection 66.2: User Agent DetectionSection 66.3: Library MethodChapter 67: SymbolsSection 67.1: Basics of symbol primitive typeSection 67.2: Using Symbol.for() to create global, shared symbolsSection 67.3: Converting a symbol into a stringChapter 68: TranspilingSection 68.1: Introduction to TranspilingSection 68.2: Start using ES6/7 with BabelChapter 69: Automatic Semicolon Insertion - ASISection 69.1: Avoid semicolon insertion on return statementsSection 69.2: Rules of Automatic Semicolon InsertionSection 69.3: Statements aected by automatic semicolon insertionChapter 70: LocalizationSection 70.1: Number formattingSection 70.2: Currency formattingSection 70.3: Date and time formattingChapter 71: GeolocationSection 71.1: Get updates when a user's location changesSection 71.2: Get a user's latitude and longitudeSection 71.3: More descriptive error codesChapter 72: IndexedDBSection 72.1: Opening a databaseSection 72.2: Adding objectsSection 72.3: Retrieving dataSection 72.4: Testing for IndexedDB availabilityChapter 73: Modularization TechniquesSection 73.1: ES6 ModulesSection 73.2: Universal Module Definition (UMD)Section 73.3: Immediately invoked function expressions (IIFE)Section 73.4: Asynchronous Module Definition (AMD)Section 73.5: CommonJS - Node.jsChapter 74: ProxySection 74.1: Proxying property lookupSection 74.2: Very simple proxy (using the set trap)Chapter 75: .postMessage() and MessageEventSection 75.1: Getting StartedChapter 76: WeakMapSection 76.1: Creating a WeakMap objectSection 76.2: Getting a value associated to the keySection 76.3: Assigning a value to the keySection 76.4: Checking if an element with the key existsSection 76.5: Removing an element with the keySection 76.6: Weak reference demoChapter 77: WeakSetSection 77.1: Creating a WeakSet objectSection 77.2: Adding a valueSection 77.3: Checking if a value existsSection 77.4: Removing a valueChapter 78: Escape SequencesSection 78.1: Entering special characters in strings and regular expressionsSection 78.2: Escape sequence typesChapter 79: Behavioral Design PatternsSection 79.1: Observer patternSection 79.2: Mediator PatternSection 79.3: CommandSection 79.4: IteratorChapter 80: Server-sent eventsSection 80.1: Setting up a basic event stream to the serverSection 80.2: Closing an event streamSection 80.3: Binding event listeners to EventSourceChapter 81: Async functions (async/await)Section 81.1: IntroductionSection 81.2: Await and operator precedenceSection 81.3: Async functions compared to PromisesSection 81.4: Looping with async awaitSection 81.5: Less indentationSection 81.6: Simultaneous async (parallel) operationsChapter 82: Async IteratorsSection 82.1: BasicsChapter 83: How to make iterator usable inside async callback functionSection 83.1: Erroneous code, can you spot why this usage of key will lead to bugs?Section 83.2: Correct WritingChapter 84: Tail Call OptimizationSection 84.1: What is Tail Call Optimization (TCO)Section 84.2: Recursive loopsChapter 85: Bitwise Operators - Real World Examples (snippets)Section 85.1: Swapping Two Integers with Bitwise XOR (without additional memory allocation)Section 85.2: Faster multiplication or division by powers of 2Section 85.3: Number's Parity Detection with Bitwise ANDChapter 86: Tilde ~Section 86.1: ~ IntegerSection 86.2: ~~ OperatorSection 86.3: Converting Non-numeric values to NumbersSection 86.4: ShorthandsSection 86.5: ~ DecimalChapter 87: Using JavaScript to get/set CSS custom variablesSection 87.1: How to get and set CSS variable property valuesChapter 88: Selection APISection 88.1: Get the text of the selectionSection 88.2: Deselect everything that is selectedSection 88.3: Select the contents of an elementChapter 89: File API, Blobs and FileReadersSection 89.1: Read file as stringSection 89.2: Read file as dataURLSection 89.3: Slice a fileSection 89.4: Get the properties of the fileSection 89.5: Selecting multiple files and restricting file typesSection 89.6: Client side csv download using BlobChapter 90: Notifications APISection 90.1: Requesting Permission to send notificationsSection 90.2: Sending NotificationsSection 90.3: Closing a notificationSection 90.4: Notification eventsChapter 91: Vibration APISection 91.1: Single vibrationSection 91.2: Check for supportSection 91.3: Vibration patternsChapter 92: Battery Status APISection 92.1: Battery EventsSection 92.2: Getting current battery levelSection 92.3: Is battery charging?Section 92.4: Get time left until battery is emptySection 92.5: Get time left until battery is fully chargedChapter 93: Fluent APISection 93.1: Fluent API capturing construction of HTML articles with JSChapter 94: Web Cryptography APISection 94.1: Creating digests (e.g. SHA-256)Section 94.2: Cryptographically random dataSection 94.3: Generating RSA key pair and converting to PEM formatSection 94.4: Converting PEM key pair to CryptoKeyChapter 95: Security issuesSection 95.1: Reflected Cross-site scripting (XSS)Section 95.2: Persistent Cross-site scripting (XSS)Section 95.3: Persistent Cross-site scripting from JavaScript string literalsSection 95.4: Why scripts from other people can harm your website and its visitorsSection 95.5: Evaled JSON injectionChapter 96: Same Origin Policy & Cross-Origin CommunicationSection 96.1: Safe cross-origin communication with messagesSection 96.2: Ways to circumvent Same-Origin PolicyChapter 97: Error HandlingSection 97.1: Error objectsSection 97.2: Interaction with PromisesSection 97.3: Error typesSection 97.4: Order of operations plus advanced thoughtsChapter 98: Global error handling in browsersSection 98.1: Handling window.onerror to report all errors back to the server-sideChapter 99: DebuggingSection 99.1: Interactive interpreter variablesSection 99.2: BreakpointsSection 99.3: Using setters and getters to find what changed a propertySection 99.4: Using the consoleSection 99.5: Automatically pausing executionSection 99.6: Elements inspectorSection 99.7: Break when a function is calledSection 99.8: Stepping through codeChapter 100: Unit Testing JavaScriptSection 100.1: Unit Testing Promises with Mocha, Sinon, Chai and ProxyquireSection 100.2: Basic AssertionChapter 101: Evaluating JavaScriptSection 101.1: Evaluate a string of JavaScript statementsSection 101.2: IntroductionSection 101.3: Evaluation and MathChapter 102: Linters - Ensuring code qualitySection 102.1: JSHintSection 102.2: ESLint / JSCSSection 102.3: JSLintChapter 103: Anti-patternsSection 103.1: Chaining assignments in var declarationsChapter 104: Performance TipsSection 104.1: Avoid try/catch in performance-critical functionsSection 104.2: Limit DOM UpdatesSection 104.3: Benchmarking your code - measuring execution timeSection 104.4: Use a memoizer for heavy-computing functionsSection 104.5: Initializing object properties with nullSection 104.6: Reuse objects rather than recreateSection 104.7: Prefer local variables to globals, attributes, and indexed valuesSection 104.8: Be consistent in use of NumbersChapter 105: Memory eciencySection 105.1: Drawback of creating true private methodAppendix A: Reserved KeywordsSection A.1: Reserved KeywordsSection A.2: Identifiers & Identifier NamesCreditsYou may also like

show more...

How to Download?!!!

Just click on START button on Telegram Bot

Free Download Book