Top Banner
Lecture 3: ES6/ES2015 and Beyonds with the Best Practices Kobkrit Viriyayudhakorn, Ph.D. CEO of iApp Technology Limited. [email protected] http://www.kobkrit.com
62

Lecture 3 - ES6 Script Advanced for React-Native

Apr 16, 2017

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Lecture 3 - ES6 Script Advanced for React-Native

Lecture 3: ES6/ES2015 and Beyonds with the Best Practices

Kobkrit Viriyayudhakorn, Ph.D. CEO of iApp Technology Limited.

[email protected] http://www.kobkrit.com

Page 2: Lecture 3 - ES6 Script Advanced for React-Native

Object #4: Pass by Reference

Page 3: Lecture 3 - ES6 Script Advanced for React-Native

Object #5: Clone a Object

Page 4: Lecture 3 - ES6 Script Advanced for React-Native

Object #6: Functions in Objects

Page 5: Lecture 3 - ES6 Script Advanced for React-Native

Object #7: ES6 Features - Dynamic Keys & Function Shorthand

Page 6: Lecture 3 - ES6 Script Advanced for React-Native

Object #8: ES6 Features - Property Value Shorthand & Destructuring

Page 7: Lecture 3 - ES6 Script Advanced for React-Native

Object #9: ES6 Features - Sprades Operators

Page 8: Lecture 3 - ES6 Script Advanced for React-Native

Exercise #1

Page 9: Lecture 3 - ES6 Script Advanced for React-Native

Object’s Airbnb Style Guides

Style Guide #1. Use literal syntax for object creation.

Page 10: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #2: Define All Property in One Place

Page 11: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #3: Use Object Method Shorthand

Page 12: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #4: Use Property Value Shorthand Why? It is shorter to write and descriptive.

Page 13: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #5: Group your shorthand properties at the beginning of your object declaration.

Why? It’s easier to tell which one are using shorthand.

Page 14: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #6: Only quote properties that are invalid identifiers

Why? Easier to Read. Easily Optimized by many JS Engines.

Page 15: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #7: Use dot notation when accessing properties. Use bracket when accessing properties with a variable.

Page 16: Lecture 3 - ES6 Script Advanced for React-Native

Array• Array is a list data structure.

• Sequence of objects

Page 17: Lecture 3 - ES6 Script Advanced for React-Native

Array #1: Declaration, Update, Length

Page 18: Lecture 3 - ES6 Script Advanced for React-Native

Array #2: Delete, Sub-Array

Page 19: Lecture 3 - ES6 Script Advanced for React-Native

Array #3: Push, Pop, Unshift, Shift

Page 20: Lecture 3 - ES6 Script Advanced for React-Native

Array #4: Array.isArray, [].indexOf

Page 21: Lecture 3 - ES6 Script Advanced for React-Native

Array #5: Loop

Page 22: Lecture 3 - ES6 Script Advanced for React-Native

Exercise #2• Write down a function to be able to add a number

to all numbers in an array.

Page 23: Lecture 3 - ES6 Script Advanced for React-Native

Array #6: Sort, Reverse

Page 24: Lecture 3 - ES6 Script Advanced for React-Native

Array #7: Array <-> String, 2D and 3D Array

Page 25: Lecture 3 - ES6 Script Advanced for React-Native

Array #8: [].forEach

Page 26: Lecture 3 - ES6 Script Advanced for React-Native

Array #9: ES6 Features: Array Spreads …, Array.from, Array.of

Page 27: Lecture 3 - ES6 Script Advanced for React-Native

Array #10: ES6 Features: [].fill, [].find, [].findIndex, [].map

Page 28: Lecture 3 - ES6 Script Advanced for React-Native

Array #11: ES6 Features: [].reduce, [].filter

Page 29: Lecture 3 - ES6 Script Advanced for React-Native

Array #12: ES6 Features: Destructuring

Page 30: Lecture 3 - ES6 Script Advanced for React-Native

Exercise #3• Do the same with Exercise #2, but using array.map

only!

Page 31: Lecture 3 - ES6 Script Advanced for React-Native

Array’s Airbnb Style Guides

Style Guide #1. Use literal syntax for array creation.

Page 32: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #2. Use Array.push() instead of direct assignment to add items to an array.

Page 33: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #3. Use array spreads ... to copy arrays.

Page 34: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #4-1 Use return statements in array method callbacks. It's ok to omit the return if the function body consists

of a single statement

Page 35: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #4-2 Use return statements in array method callbacks. It's ok to omit the return if the function body consists

of a single statement

Page 36: Lecture 3 - ES6 Script Advanced for React-Native

String

String #1: Declaration, Concatenation, NewLine

Page 37: Lecture 3 - ES6 Script Advanced for React-Native

String #2: ES6 Feature - Template Strings

Page 38: Lecture 3 - ES6 Script Advanced for React-Native

String #3: Number <-> Strings

Page 39: Lecture 3 - ES6 Script Advanced for React-Native

String #4: IndexOf, Search, Replace

Page 40: Lecture 3 - ES6 Script Advanced for React-Native

String #5: IndexOf, Search, Replace, Compare

Page 41: Lecture 3 - ES6 Script Advanced for React-Native

String #6: charAt, slice, toLowerCase, toUpperCase, trim, includes

Page 42: Lecture 3 - ES6 Script Advanced for React-Native

String #7: startsWith, endsWith, Repeats

Page 43: Lecture 3 - ES6 Script Advanced for React-Native

Exercise #4Write function that count word size case-insensitively.

Input: "Hello world hello hello earth earth" (Not limited to these word, it can be any words)

Output: Object{hello : 3, world : 1, earth : 2 }

Page 44: Lecture 3 - ES6 Script Advanced for React-Native

String’s Airbnb Style Guides

Style Guide #1. Use single quote ‘ ‘ for Strings

Page 45: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #2. Strings that cause the line to go over 100 characters should not be written across multiple lines using

string concatenation.

Page 46: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #3 When programmatically building up strings, use template strings instead of concatenation

Page 47: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #4 - Do not unnecessarily escape characters in strings.

Page 48: Lecture 3 - ES6 Script Advanced for React-Native

Class• Programming Paradigm that Encapsulate data and methods based

on the concept of real world objects.

• JavaScript never have Class concept before. They just added in ES6.

• I personally like the function-oriented nature of JavaScript more. But by adding the Class, it make the object-oriented programming in JavaScript a lot easier and nicer.

Page 49: Lecture 3 - ES6 Script Advanced for React-Native

Class #1: ES6 Feature - Declaration, Instantiate

Page 50: Lecture 3 - ES6 Script Advanced for React-Native

Class #2: ES6 Feature - Extend

Page 51: Lecture 3 - ES6 Script Advanced for React-Native

Class #3: ES6 Feature - Getter/Setter

Page 52: Lecture 3 - ES6 Script Advanced for React-Native

Class’s Airbnb Style Guides

Style Guide #1. Methods can return this, to enable method chaining.

Page 53: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #2 Classes have a default constructor if one is not specified. An empty constructor function or one that just

delegates to a parent class is unnecessary.

Page 54: Lecture 3 - ES6 Script Advanced for React-Native

Modules• ES6 gave us a native way to organize our code into

modules.

Page 55: Lecture 3 - ES6 Script Advanced for React-Native

Module #1: ES6 Feature - Import, Export

Page 56: Lecture 3 - ES6 Script Advanced for React-Native

Module’s Airbnb Style Guides

Style Guide #1 Do not use wildcard imports.

Page 57: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #2 Only import from a path in one place

Page 58: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #3: Put all imports above non-import statements.

Page 59: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #4: Do not export directly from an import

Page 60: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #5: Do not export mutable bindings.

Page 61: Lecture 3 - ES6 Script Advanced for React-Native

Style Guide #6: In modules with a single export, prefer default export over named export.

Page 62: Lecture 3 - ES6 Script Advanced for React-Native

HomeWorkLet’s say: '(', '{', '[' are called “openers." ')', '}', ']' are called "closers."

Write an efficient function that tells us whether or not an input string's openers and closers are properly nested.

Examples: "{ [ ] ( ) }" should return true "{ [ ( ] ) }" should return false "{ [ }" should return false