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.
							 |