59 lines
1.6 KiB
Markdown
59 lines
1.6 KiB
Markdown
|
---
|
||
|
title: ES6
|
||
|
---
|
||
|
|
||
|
## ES6
|
||
|
|
||
|
The 6th edition of ECMAScript is called ES6.
|
||
|
|
||
|
It is also know as ES2015.
|
||
|
|
||
|
The changes add a lot of syntactic sugar that allow developers to create applications in an object oriented style.
|
||
|
|
||
|
> ES5 example:
|
||
|
|
||
|
```javascript
|
||
|
var User = function () {
|
||
|
function User(name) {
|
||
|
this._name = name;
|
||
|
}
|
||
|
|
||
|
User.prototype.getName = function getName(x) {
|
||
|
return 'Mr./Mrs. ' + this._name;
|
||
|
};
|
||
|
|
||
|
return User;
|
||
|
}();
|
||
|
```
|
||
|
|
||
|
> ES6 example:
|
||
|
|
||
|
```javascript
|
||
|
class User {
|
||
|
constructor(name) {
|
||
|
this._name = name
|
||
|
}
|
||
|
|
||
|
getName() {
|
||
|
return `Mr./Mrs. ${this._name}`
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
A lot of new syntax features were introduced including:
|
||
|
|
||
|
- classes,
|
||
|
- modules,
|
||
|
- templating,
|
||
|
- for/of loops,
|
||
|
- generator expressions,
|
||
|
- arrow functions,
|
||
|
- collections,
|
||
|
- promises.
|
||
|
|
||
|
Nowadays most of the features are available in all popular browsers. The <a href='https://kangax.github.io/compat-table/es6/' target='_blank' rel='nofollow'>compatibility table</a> contains all information about feature availability of all modern browsers.
|
||
|
|
||
|
Frequently new features arrive that are part of the successor ES7. A common way is to translate modern JavaScript (ES6, ES7 and other experimental proposals) to ES5. This makes sure that also old browsers can execute the code. There are tools like <a href='https://babeljs.io/' target='_blank' rel='nofollow'>Babel</a> that transforms new JavaScript to ES5.
|
||
|
|
||
|
Besides syntactic sugar coming from ECMAScript standards there are features that require a <a href='https://babeljs.io/docs/usage/polyfill' target='_blank' rel='nofollow'>Polyfill</a>. Usually they are necessary because whole class/method implementations were added to the standard.
|