add experimental es7 object spread/rest - closes #200

This commit is contained in:
Sebastian McKenzie
2014-11-23 21:43:01 +11:00
parent c500532469
commit 3447204d97
23 changed files with 155 additions and 24 deletions

View File

@@ -4,14 +4,15 @@ In order for certain features to work they require certain polyfills. You can
satisfy **all** 6to5 feature requirements by using the included
[polyfill](polyfill.md). You may alternatively selectively include what you need:
| Feature | Requirements |
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| Abstract References | `Symbol` |
| Array destructuring | `Array.isArray`, `Array.from` |
| Async functions, Generators | [experimental option](usage.md#experimental), [regenerator runtime](https://github.com/facebook/regenerator/blob/master/runtime.js) |
| Comprehensions | [experimental option](usage.md#experimental), `Array.isArray`, `Array.from` |
| For..Of | `Symbol`, `prototype[Symbol.iterator]` |
| Spread | `Array.isArray`, `Array.from` |
| Feature | Requirements |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| Abstract References | [experimental](usage.md#experimental), `Symbol` |
| Array destructuring | `Array.isArray`, `Array.from` |
| Async functions, Generators | [experimental](usage.md#experimental), [regenerator runtime](https://github.com/facebook/regenerator/blob/master/runtime.js) |
| Comprehensions | [experimental](usage.md#experimental), `Array.isArray`, `Array.from` |
| For Of | `Symbol`, `prototype[Symbol.iterator]` |
| Spread | `Array.isArray`, `Array.from` |
| Object spread/rest | [experimental](usage.md#experimental), `Object.assign` |
## Classes

View File

@@ -88,13 +88,14 @@ better suited if you'd like a full ES6 environment with polyfills and all.
| Rest parameters | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Spread | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Template literals | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Object rest/spread | ✓ | | | | | ✓ |
| Unicode regex | ✓ | ✓ | ✓ | | | |
### [Traceur](https://github.com/google/traceur-compiler)
Traceur requires quite a bulky runtime (~75KB) and produces quite verbose code.
While this can be trimmed down by selectively building the runtime, it's an
unneccesary step when a runtime can be eliminated entirely.
unneccesary step when a large runtime can be eliminated entirely.
### [es6now](https://github.com/zenparsing/es6now)

View File

@@ -8,7 +8,7 @@ foo::bar = baz;
delete foo::bar;
```
## Array comprehension ([experimental](usage.md#experimental))
## Array comprehensions ([experimental](usage.md#experimental))
```javascript
var results = [for (c of customers) if (c.city == "Seattle") { name: c.name, age: c.age }]
@@ -158,7 +158,7 @@ for (var n of fibonacci()) {
}
```
## Generator comprehension ([experimental](usage.md#experimental))
## Generator comprehensions ([experimental](usage.md#experimental))
```javascript
var nums = [1, 2, 3, 4, 5, 6];
@@ -253,6 +253,13 @@ var y = 10;
console.log(`${x} + ${y} = ${x + y}`); // "5 + 10 = 15"
```
## Object spread/rest ([experimental](usage.md#experimental)) ([spec](https://github.com/sebmarkbage/ecmascript-rest-spread))
```javascript
var n = { x, y, ...z };
var { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
```
## Unicode regex
```javascript

View File

@@ -52,4 +52,5 @@ And it doesn't end here! To see all the ways you can use 6to5, check out the
- [Rest parameters](features.md#rest-parameters)
- [Spread](features.md#spread)
- [Template literals](features.md#template-literals)
- [Object Rest/Spread](features.md#object-rest-spread) ([experimental](usage.md#experimental))
- [Unicode regex](features.md#unicode-regex)