Tags

  • AWS (7)
  • Apigee (3)
  • ArchLinux (5)
  • Array (6)
  • Backtracking (6)
  • BinarySearch (6)
  • C++ (19)
  • CI&CD (3)
  • Calculus (2)
  • DesignPattern (43)
  • DisasterRecovery (1)
  • Docker (8)
  • DynamicProgramming (20)
  • FileSystem (11)
  • Frontend (2)
  • FunctionalProgramming (1)
  • GCP (1)
  • Gentoo (6)
  • Git (15)
  • Golang (1)
  • Graph (10)
  • GraphQL (1)
  • Hardware (1)
  • Hash (1)
  • Kafka (1)
  • LinkedList (13)
  • Linux (27)
  • Lodash (2)
  • MacOS (3)
  • Makefile (1)
  • Map (5)
  • MathHistory (1)
  • MySQL (21)
  • Neovim (10)
  • Network (66)
  • Nginx (6)
  • Node.js (33)
  • OpenGL (6)
  • PriorityQueue (1)
  • ProgrammingLanguage (9)
  • Python (10)
  • RealAnalysis (20)
  • Recursion (3)
  • Redis (1)
  • RegularExpression (1)
  • Ruby (19)
  • SQLite (1)
  • Sentry (3)
  • Set (4)
  • Shell (3)
  • SoftwareEngineering (12)
  • Sorting (2)
  • Stack (4)
  • String (2)
  • SystemDesign (13)
  • Terraform (2)
  • Tree (24)
  • Trie (2)
  • TwoPointers (16)
  • TypeScript (3)
  • Ubuntu (4)
  • Home

    A Review of ES6 - Enhanced Object Properties, Destructuring Assignment

    Published Oct 09, 2019 [  Node.js  ]

    Enhanced Object Properties

    Property Shorthand

    Shorter syntax for common object property definition idiom.

    var x = 0, y = 0
    obj = { x, y }
    

    Computed Property Names

    Support for computed names in object property definitions.

    let obj = {
        foo: "bar",
        [ "baz" + quux() ]: 42
    }
    

    Method Properties

    Support for method notation in object property definitions, for both regular functions and generator functions.

    obj = {
        foo (a, b) {
            
        },
        bar (x, y) {
            
        },
        *quux (x, y) {
            
        }
    }
    

    Destructuring Assignment

    Array Matching

    Intuitive and flexible destructuring of Arrays into individual variables during assignment.

    var list = [ 1, 2, 3 ]
    var [ a, , b ] = list
    [ b, a ] = [ a, b ]
    

    Object Matching, Shorthand Notation

    Intuitive and flexible destructuring of Objects into individual variables during assignment.

    var { op, lhs, rhs } = getASTNode()
    

    Object Matching, Deep Matching

    Intuitive and flexible destructuring of Objects into individual variables during assignment.

    var { op: a, lhs: { op: b }, rhs: c } = getASTNode()
    

    Object And Array Matching, Default Values

    Simple and intuitive default values for destructuring of Objects and Arrays.

    var obj = { a: 1 }
    var list = [ 1 ]
    var { a, b = 2 } = obj
    var [ x, y = 2 ] = list
    

    Parameter Context Matching

    Intuitive and flexible destructuring of Arrays and Objects into individual parameters during function calls.

    function f ([ name, val ]) {
        console.log(name, val)
    }
    function g ({ name: n, val: v }) {
        console.log(n, v)
    }
    function h ({ name, val }) {
        console.log(name, val)
    }
    f([ "bar", 42 ])
    g({ name: "foo", val:  7 })
    h({ name: "bar", val: 42 })
    

    Fail-Soft Destructuring

    Fail-soft destructuring, optionally with defaults.

    var list = [ 7, 42 ]
    var [ a = 1, b = 2, c = 3, d ] = list
    a === 7
    b === 42
    c === 3
    d === undefined
    

    References: