ECMAScript 6 рдореЗрдВ рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕

рддреАрд░ рдХрд╛рд░реНрдп рдкрд╛рдЧрд▓рдкрди рдХрд░рддрд╛ рд╣реИ
рдирдП ECMAScript 6 рдорд╛рдирдХ рдХреЗ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рднрд╛рдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рддреАрд░ => рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрддреНрдХреГрд╖реНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдЕрдиреНрдп рдкрд╣рд▓реБрдУрдВ рдореЗрдВ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ:

рдЗрди рдорддрднреЗрджреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдХрд╛рд░рдг рдереЗред рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдХреНрд╕рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╡рд╛рдВрдЫрд┐рдд рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рдЦреЛрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдФрд░ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдЗрди рд╕реАрдорд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рддреАрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рдЪрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ)ред


рдиреЛрдЯ: рдпрд╣ рд▓реЗрдЦ рдЕрдВрдбрд░рд╕реНрдЯреИрдВрдбрд┐рдВрдЧ ECMAScript 6 рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд▓реЗрдЦ рдХреЗ рдирд┐: рд╢реБрд▓реНрдХ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдирд╡реАрдирддрдо рдбреНрд░рд╛рдлреНрдЯ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ (20 рдЬрдирд╡рд░реА 2014 рдбреНрд░рд╛рдлреНрдЯ рд░реЗрд╡ 22) рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдПрдХ рд╕рдВрдХрд▓рди рд╣реИред

рд╕рд╛рдордЧреНрд░реА рдХреА рддрд╛рд▓рд┐рдХрд╛


рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕



рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 var fun = (x) => x; 

рдпрд╣ рд╕реНрдХрд╛рд▓рд╛, рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреИрд╕реА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕рдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рд╕реА # рд╕реЗ рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╡рд╛рдХреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рдорд╛рди рд╣реИред

рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреИрд╕реЗ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдШреЛрд╖рдгрд╛ рд╣рдореЗрд╢рд╛ рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдЙрд╕рдХреЗ рдмрд╛рдж рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рддреАрд░ рдФрд░ рд╢рд░реАрд░ред рдЖрдк рдЬреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддрд░реНрдХ рд╕реВрдЪреА рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдЖрдХрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░


рдПрдХ рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рдЬреЛ рдПрдХ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдмрд╕ рд░рд┐рдЯрд░реНрди рдХрд░рддрд╛ рд╣реИ рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рджрд┐рдЦрддрд╛ рд╣реИ:

 var reflect = value => value; //  var reflect = function(value) { return value; } 

рдЬрдм рдПрдХ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рддрд░реНрдХ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрд┐рдирд╛ рдХреЛрд╖реНрдардХ рдХреЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╢рд░реАрд░ рддреАрд░ рдХреЗ рдмрд╛рдж рднреА рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЗ рдмрд┐рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд╛рдкрд╕реА рдХреАрд╡рд░реНрдб рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХрдИ рдорд╛рдкрджрдВрдбреЛрдВ


рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреЛрд╖реНрдардХ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реВрдЪреА рдХреЛ рдлреНрд░реЗрдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

 var sum = (num1, num2) => num1 + num2; //  var sum = function(num1, num2) { return num1 + num2; }; 

sum рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рджреЛ рддрд░реНрдХреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдХреЛрд╖реНрдардХ рдФрд░ рдПрдХ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо (рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреА рддрд░рд╣) рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИред

рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ


рдЗрд╕реА рддрд░рд╣, рдмрд┐рдирд╛ рдХрд┐рд╕реА рддрд░реНрдХ рдХреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЛрд╖реНрдардХ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдПрдХ рдЦрд╛рд▓реА рдкреИрд░рд╛рдореАрдЯрд░ рд╕реВрдЪреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:

 var sum = () => 1 + 2; //  var sum = function() { return 1 + 2; }; 


рдкрд╛рд░рдВрдкрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рд╕рд┐рдВрдЯреИрдХреНрд╕


рдЖрдк рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдХреЗ рд▓рд┐рдП рдкрд╛рд░рдВрдкрд░рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЗрд╕рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд╣реЛрдВред рдпрд╣реА рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ рдФрд░ рд░рд┐рдЯрд░реНрди рдХреАрд╡рд░реНрдб рдЬреЛрдбрд╝реЗрдВ:

 var sum = (num1, num2) => { return num1 + num2; } //  var sum = function(num1, num2) { return num1 + num2; }; 

рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рд╢рд╛рд╕реНрддреНрд░реАрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рд╢реЗрд╖ рдЪрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╕реБрдкрд░ рдФрд░ рддрд░реНрдХреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧрдгрдирд╛ рдХреА рдЬрд╛рдПрдЧреАред

рд╡рд╕реНрддреБ рд╢рд╛рдмреНрджрд┐рдХ


рдЕрд▓рдЧ-рдЕрд▓рдЧ, рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдШреБрдВрдШрд░рд╛рд▓реЗ рдХреЛрд╖реНрдардХ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдмрд╕ рдПрдХ рд╡рд╕реНрддреБ рд╢рд╛рдмреНрджрд┐рдХ рд░рд┐рдЯрд░реНрди рдХреЛ рдХреЛрд╖реНрдардХ рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 var getTempItem = id => ({ id: id, name: "Temp" }); //  var getTempItem = function(id) { return { id: id, name: "Temp" } }; 

рдХреЛрд╖реНрдардХ рдореЗрдВ рд╡рд╕реНрддреБ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рд░рдЦрдирд╛ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдХреЗ рд▓рд┐рдП рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рд╢реБрд░реБрдЖрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдмреНрджрд┐рдХ рдХреА рд╢реБрд░реБрдЖрдд рд╣реИред

рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрдЦреНрдпрд╛


рдЪреВрдБрдХрд┐ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ "рдореВрд▓" рддрд░реНрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реИ ( рддрд░реНрдХреЛрдВ рдХрд╛ рдорд╛рди рдкрд╛рд░рдВрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рддреАрд░ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рдореВрд▓реНрдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рддреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдПрдХ рдЪрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рдХреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдкреИрдЯрд░реНрди рд╕реЗ рдмрд╛рдХреА рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 var getTempItems = (...rest) => rest; //  var getTempItems = function() { return [].slice.apply(arguments) }; 

рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдЯреЗрдореНрдкрд▓реЗрдЯ


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдкреИрдЯрд░реНрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - рдЖрдк рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ ECMAScript 6, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЕрд╡рд▓реЛрдХрди , рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреА рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рддрд░реНрдХ рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдПрдХрдорд╛рддреНрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрдиреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг:

 var a = ({a}) => a; var b = ([b]) => b; 


рддреАрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛



рд╕рдВрджрд░реНрдн рд╕реЗрдЯ рдХрд░рдирд╛


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдлрд╝рдВрдХреНрд╢рди (рдмрд╛рдЗрдВрдбрд┐рдВрдЧ) рдХреЗ рдЕрдВрджрд░ рдЗрд╕ рдорд╛рди рдХреЛ рд╕рд╣реА рдХрд░ рд░рд╣реА рд╣реИ ред рдЪреВрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдорддрд▓рдм рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдХрд┐рд╕реА рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

 var pageHandler = { id: "123456" , init: function() { document.addEventListener("click", function(event) { this.doSomething(event.type); //  }); } , doSomething: function(type) { console.log("Handling " + type + " for " + this.id) } }; 

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ, pageHandler рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреГрд╖реНрда рдкрд░ рдХреНрд▓рд┐рдХ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред init() рд╡рд┐рдзрд┐ рд╡рд╛рдВрдЫрд┐рдд рдШрдЯрдирд╛ рдкрд░ рд╣реИрдВрдбрд▓рд░ рдХреЛ this.doSomething() , рдЬрд┐рд╕реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рдХреЙрд▓ this.doSomething() ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЛрдб рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред this.doSomething() рд╕рдВрджрд░реНрдн рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд┐рдпреЛрдЬрд┐рдд pageHandler рдмрдЬрд╛рдп рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЕрдВрджрд░ document рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ pageHandler ред рдЬрдм рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА рдХреНрдпреЛрдВрдХрд┐ document рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ doSomething рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред

рдЖрдк рдЗрд╕реЗ pageHandler рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ pageHandler рдХрд╛ рдЙрдкрдпреЛрдЧ handleEvent рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдирдХ bind() рд╡рд┐рдзрд┐ рд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ bind() :

 var pageHandler = { id: "123456" , init: function() { document.addEventListener("click", (function(event) { this.doSomething(event.type); // error }).bind(this)); } , doSomething: function(type) { console.log("Handling " + type + " for " + this.id) } }; 

рдЕрдм рдХреЛрдб рдЗрд░рд╛рджрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдзрд┐рдХ рднрд╛рд░реА рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рд░ рдмрд╛рд░ bind(this) рдХреЙрд▓ bind(this) рдЖрдк рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдорд╛рди pageHandler рдорд╛рди рд╕реЗ рдмрдВрдзрд╛ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдЖрдкрдХреЗ рдЗрдЪреНрдЫрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЗрд╕ (рдФрд░ рд╕рд╛рде рд╣реА рд╕реБрдкрд░ рдФрд░ рддрд░реНрдХреЛрдВ ) рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╢рд╛рдмреНрджрд┐рдХ рдмрдВрдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рдЙрд╕ рд╕реНрдерд╛рди рдХреЗ рдореВрд▓реНрдп рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 var pageHandler = { id: "123456" , init: function() { document.addEventListener("click", event => this.doSomething(event.type)); } , doSomething: function(type) { console.log("Handling " + type + " for " + this.id) } }; 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдПрдХ рд╣реИрдВрдбрд▓рд░ рдПрдХ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕рдореЗрдВ this.doSomething() ред рдЗрд╕рдХрд╛ рдорд╛рди init() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХреЛрдб bind() рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХреЗ рд╕рдорд╛рди рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рднрд▓реЗ рд╣реА рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП this.doSomething() рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдХреЗ рдЕрдВрджрд░ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг bind() рдХреЙрд▓ bind() рд╕реЗ рднреА рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдирд┐рдореНрди рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд╣реИ:

 var pageHandler = { id: "123456" , init: function() { var self = this; document.addEventListener("click", function(event) { return self.doSomething(event.type) }); } , doSomething: function(type) { console.log("Handling " + type + " for " + this.id) } }; 

рдпрд╣реА рд╣реИ, рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ bind() рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред

рдПрдХрд╛рдзрд┐рдХ рдХреЙрд▓ рдХреЗ рдмреАрдЪ рд╕рдВрджрд░реНрдн рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЖрдк рдПрдХ рддреАрд░ рдХрд╛ рдХрд╛рдо рджреВрд╕рд░реЗ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЙрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ "рдлреЗрдВрдХ":

 var obj = { arr1: [1, 2, 3] , arr2: ['a', 'b', 'c'] , concatenate: function(a, b){ return a + "|" + b } , intersection: function() { return this.arr1.reduce( (sum, v1) => // arrow function 1 this.arr2.reduce( (sum, v2) => { // arrow function 2 sum.push( this.concatenate( v1, v2 ) ) return sum; } , sum ) , [] ) } }; var arrSum = obj.intersection();//['1|a', '1|b', '1|c', '2|a', '2|b', '2|c', '3|a', '3|b', '3|c'] 


рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рддреАрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдЙрдиреНрд╣реЗрдВ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рдЙрдореНрдореАрджрд╡рд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЖрдорддреМрд░ рдкрд░ рдРрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 var result = values.sort(function(a, b) { return a - b }); 

рдПрдХ рд╕рд░рд▓ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдХреНрд░рд┐рдпрд╛ред рдПрдХ рдЫреЛрдЯреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ:

 var result = values.sort((a, b) => a - b); 

рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ sort() , map() , reduce() рдФрд░ рдЗрд╕реА sort() рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫреЛрдЯреЗ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рд▓реАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рддреАрд░ рдХреА рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ



рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рддреАрд░ рдХреЗ рдХрд╛рд░реНрдп рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:

рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдПрдХ рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред

рдкрд░рд┐рдгрд╛рдо



рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ ECMAScript 6 рдореЗрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬреЛ рдПрдХ рдЫреЛрдЯреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЛ рджреВрд╕рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред

рд▓реИрдХреЛрдирд┐рдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЖрдкрдХреЛ рдЬрдЯрд┐рд▓ рдЪреАрдЬреЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рднреА рдХрдард┐рди рдЖрд╕рд╛рдиред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЬрдирд░реЗрдЯрд░ рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛ (рдЬреЛ es5 рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреНрд░рд┐рдпрд╛ рджрд┐рдЦрддрд╛ рд╣реИ ):

 let idGen = (start = 0, id = start, reset = (newId = start) => id = newId, next = () => id++) => ({reset, next}); let gen = idGen(100); console.log(gen.next(), gen.next(), gen.reset(10), gen.next());//100 101 10 10 

рдФрд░ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рджрд░реНрдж рдФрд░ рд╣рддрд╛рд╢рд╛ рдХреЗ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдХреЗ рд╕реНрддрд░ рдкрд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛ред
рдПрдлрдПрдл рдореЗрдВ рдкрд╛рдЧрд▓рдкрди
рдпрджрд┐ рдЖрдк рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ (02.2014 FF28) рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд▓рдЧрднрдЧ рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (FF28 рд╕рд╣реА рдврдВрдЧ рд╕реЗ рддрд░реНрдХ рдорд╛рди рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред

рдЖрдк рдСрдирд▓рд╛рдЗрди рдЯреНрд░реЗрд╕реЗрд░ рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯрд░ рдореЗрдВ рдПрд╕реНрдХ 6 рдХреЗ рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рднреА рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/In213455/


All Articles