--- layout: post title: JavaScript notes I tags: - javascript ## Make sure to change these published: true sitemap: true --- Let's review some JavaScript features in a hurry! ## Iterables Objects that can be used in `for..of` are called iterable. Iterables must implement the method named `Symbol.iterator`. The result of `obj[Symbol.iterator]` is called an iterator. An iterator must have the method named `next()` that returns an object `{done: Boolean, value: any}`, the value is the next value. The `Symbol.iterator` method is called automatically by `for..of`, but we also can do it directly. `Array.from(obj[, mapFn, thisArg])` makes a real Array of an iterable or array-like obj, and we can then use array methods on it. The optional arguments mapFn and thisArg allow us to apply a function to each item. ## Destructuring Map an object or array to variables. Object syntax: let {prop : varName = default, ...} = object Array syntax: let [item1 = default, item2, ...rest] = array The first item goes to `item1`; the second goes into `item2`, all the rest makes the array rest. ## Map and Set `Map`, is a collection of keyed values, it allows objects to be keys and provides a `size` property. `Set`, is a collection of unique values, does not allow to reorder elements. The following allow garbage-collection: There ara also `WeakMap` and `WeakSet` which provide garbage collection, I need to research more about these. Maybe the next post.