On Github haraldringvold / es6-lyntale
(pilfunksjon, arrow function)
Et parameter
var reflect = value => value; // effectively equivalent to: var reflect = function(value) { return value; };
Flere parameter
var sum = (num1, num2) => { return num1 + num2; } // effectively equivalent to: var sum = function(num1, num2) { return num1 + num2; };
Inni curly braces: Mer eller mindre likt som insiden av en vanlig funksjon.
Uten parametere
var sum = () => 1 + 2; // effectively equivalent to: var sum = function() { return 1 + 2; };
Returnere 'object literals'
var getTempItem = id => ({ id: id, name: "Temp" }); // effectively equivalent to: var getTempItem = function(id) { return { id: id, name: "Temp" }; };
jaokda!
var PageHandler = { id: "123456", init: function() { document.addEventListener("click", function(event) { this.doSomething(event.type); }, false); }, doSomething: function(type) { console.log("Handling " + type + " for " + this.id); } };
var PageHandler = { id: "123456", init: function() { document.addEventListener("click", (function(event) { this.doSomething(event.type); }).bind(this), false); }, doSomething: function(type) { console.log("Handling " + type + " for " + this.id); } };
Pilfunksjon
var PageHandler = { id: "123456", init: function() { document.addEventListener("click", event => this.doSomething(event.type), false); }, doSomething: function(type) { console.log("Handling " + type + " for " + this.id); } };
ES6-klasser er enkel syntaktisk sukker over prototyp-basert OO-teknikk.
En praktisk deklarativ form som uttrykker programmererens hensikt i stedet for den underliggende maskineriet.
Javascripts konstruktør funksjoner, prototyper og instanser er mer en nok til å løse det klasser gjør i andre språk.
ES6 klasser er disse tre under panseret.
Utkast, fortsatt i endring. Siste endring var rev. 28, 14. oktober
var Language = function(config) { this.name = config.name; this.founder = config.founder; this.year = config.year; }; Language.prototype.summary = function() { return this.name + " was created by " + this.founder + " in " + this.year; };
class Language { constructor(name, founder, year) { this.name = name; this.founder = founder; this.year = year; } summary() { return this.name + " was created by " + this.founder + " in " + this.year; } }
class MetaLanguage extends Language { constructor(x, y, z, version) { super(x, y, z); this.version = version; } static isItMeta() { return "YEEEEESH!" ; } }
..svares etter beste evne.
Husk å gi tilbakemelding!