рд╕рд╛рдордЧреНрд░реА, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣рдо рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд╕реНрддреБ рд╢рд╛рдмреНрджрд┐рдХ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЬреЛ рдирд╡рд╛рдЪрд╛рд░ ECMAScript рдорд╛рдирдХ рдХреЗ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдПред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреНрд╖рдорддрд╛ рд╣реИред ES2015 (ES6) рдорд╛рдирдХ рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ (IE рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдФрд░ Node.ss рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред

рдореВрд▓ рдмрд╛рддреЗрдВ
рдХреБрдЫ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдо рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЬреИрд╕реЗ,
class
рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрд╣реБрдд рдЬрд▓реНрджреА рдФрд░ рдмрд╕ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
// ES5 var myObject = { prop1: 'hello', prop2: 'world', output: function() { console.log(this.prop1 + ' ' + this.prop2); } }; myObject.output(); // hello world
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ, "рдбрд┐рд╕реНрдкреЛрдЬреЗрдмрд▓" рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рдВрд╕ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди рдФрд░ рдЕрдиреНрдп рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ ES6 рдЙрдирдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдЪрд░реЛрдВ рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЖрд░рдВрдн
рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЧреБрдг рдЕрдХреНрд╕рд░ рдЪрд░ рд╕реЗ рдмрдирд╛рдпреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрди рдЪрд░реЛрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
ES6 рдореЗрдВ, рдЖрдкрдХреЛ рдЕрдм рдЪрд░ рдирд╛рдо рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:
рд░рд┐рд╡рд╛рдЗрд▓рд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рддрдХрдиреАрдХ рд▓реМрдЯреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдирд╛рдо рд╕рдВрдШрд░реНрд╖ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдХреЛрдб рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╛рдо рд╕реНрдерд╛рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
// ES6 const lib = (() => { function sum(a, b) { return a + b; } function mult(a, b) { return a * b; } return { sum, mult }; }()); console.log( lib.sum(2, 3) ); // 5 console.log( lib.mult(2, 3) ); // 6
рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ ES6 рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
// lib.js function sum(a, b) { return a + b; } function mult(a, b) { return a * b; } export { sum, mult };
рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рдзрд┐ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╕рд┐рдВрдЯреИрдХреНрд╕
ES5 рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ
function
рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
// ES5 var lib = { sum: function(a, b) { return a + b; }, mult: function(a, b) { return a * b; } }; console.log( lib.sum(2, 3) ); // 5 console.log( lib.mult(2, 3) ); // 6
рдЕрдм, ES6 рдореЗрдВ, рдЖрдк рдЕрдм рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣рд╛рдБ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╢реБрд▓рд┐рдкрд┐ рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛ рд╡рд┐рдзрд┐ рдЕрдиреБрдореЗрдп рд╣реИ:
// ES6 const lib = { sum(a, b) { return a + b; }, mult(a, b) { return a * b; } }; console.log( lib.sum(2, 3) ); // 5 console.log( lib.mult(2, 3) ); // 6
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ ES6 рддреАрд░ рдлрд╝рдВрдХреНрд╢рди (
=>
) рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ (рдИрдПрд╕ 5 рдореЗрдВ) рддрд░реАрдХреЛрдВ рдХреЛ рдирд╛рдо рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
// ES6 const lib = { sum: (a, b) => a + b, mult: (a, b) => a * b }; console.log( lib.sum(2, 3) ); // 5 console.log( lib.mult(2, 3) ); // 6
рдЧрддрд┐рд╢реАрд▓ рдЪрд╛рдмрд┐рдпрд╛рдБ
ES5 рдореЗрдВ, рдЖрдк рдХреБрдВрдЬреА рдирд╛рдореЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдВрдЬреА рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдЪрд░ рдХреЛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╡рд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
// ES5 var key1 = 'one', obj = { two: 2, three: 3 }; obj[key1] = 1; // obj.one = 1, obj.two = 2, obj.three = 3
рдИрдПрд╕ 6 рдореЗрдВ, рд╕реНрдХреНрд╡рд╛рдпрд░ рдмреНрд░реИрдХреЗрдЯ (
[]
) рдореЗрдВ рдПрдХ рдирд╛рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд░рдЦрдХрд░ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЪрд╛рдмрд┐рдпрд╛рдБ рд╕реМрдВрдкреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
// ES6 const key1 = 'one', obj = { [key1]: 1, two: 2, three: 3 }; // obj.one = 1, obj.two = 2, obj.three = 3
рдПрдХ рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд┐рд╕реА рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
// ES6 const i = 1, obj = { ['i' + i]: i }; console.log(obj.i1); // 1
рдбрд╛рдпрдирд╛рдорд┐рдХ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
// ES6 const i = 2, obj = { ['mult' + i]: x => x * i }; console.log( obj.mult2(5) ); // 10
рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рдмрдирд╛рдирд╛ рд╣реИред рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдХрдо рд╣реЛ рд╕рдХрддреА рд╣реИред рд╢рд╛рдпрдж рдЕрдЧрд░ рдЖрдкрдХреЛ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдирд╛рдо рдЙрдЪрд┐рдд рд▓рдЧрддреЗ рд╣реИрдВ, рддреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдпрд╛ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред
destructuring
рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдФрд░ рдЪрд░ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдХрд╛рд░реНрдп рд╣реИред рдЕрдХреНрд╕рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреЗ рджреМрд░рд╛рди, рдЖрдкрдХреЛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреА рд╡реИрд▓реНрдпреВ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдЙрд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИред ES5 рдореЗрдВ, рдЖрдкрдХреЛ рд╕рдВрдкрддреНрддрд┐ рдПрдХреНрд╕реЗрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░рдирд╛ рдерд╛:
// ES5 var myObject = { one: 'a', two: 'b', three: 'c' }; var one = myObject.one, // 'a' two = myObject.two, // 'b' three = myObject.three; // 'c'
ES6 рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЙрд╕реА рдирд╛рдо рд╕реЗ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕рд╣рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:
// ES6 const myObject = { one: 'a', two: 'b', three: 'c' }; const { one, two, three } = myObject; // one = 'a', two = 'b', three = 'c'
рд╡реЗрд░реАрдПрдмрд▓реНрд╕ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рд╡реИрд▓реНрдпреВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рднреА рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рд╡реЗ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдирд╛рдореЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ
{ propertyName: newVariable }
рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
// ES6 const myObject = { one: 'a', two: 'b', three: 'c' }; const { one: first, two: second, three: third } = myObject; // first = 'a', second = 'b', third = 'c'
рдПрдХ рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдПрдБ, рдЬрд┐рд╕рдореЗрдВ рд╕рд░рдгрд┐рдпрд╛рдБ рдФрд░ рдЕрдиреНрдп рд╡рд╕реНрддреБрдПрдБ рд╕рдиреНрдирд┐рд╣рд┐рдд рд╣реИрдВ, рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХрд╛рд░реНрдп рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
// ES6 const meta = { title: 'Enhanced Object Literals', pageinfo: { url: 'https://www.sitepoint.com/', description: 'How to use object literals in ES2015 (ES6).', keywords: 'javascript, object, literal' } }; const { title : doc, pageinfo: { keywords: topic } } = meta; /* doc = 'Enhanced Object Literals' topic = 'javascript, object, literal' */
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╕рдм рдЬрдЯрд┐рд▓ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ:
- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рджрд╛рдИрдВ рдУрд░ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╣реИ - рдПрдХ рд╕рд░рдгреА рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред
- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╣реИ - рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдЬреЛ рдЪрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ рдЬрд┐рд╕реЗ рд╕рд░рдгреА рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╢реБрд░реВ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддрдм рдпрд╣ рдХреЛрдб рдХреЗ рдмреНрд▓реЙрдХ рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
{ a, b, c } = myObject;
рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рдЖрдорддреМрд░ рдкрд░ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:
const = myObject;
рдпрджрд┐ рдЪрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдШреЛрд╖рд┐рдд рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреЛрд╖реНрдардХреЛрдВ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
let a, b, c; ({ a, b, c } = myObject);
рдирддреАрдЬрддрди, рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рджреМрд░рд╛рди, рдЖрдкрдХреЛ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдШреЛрд╖рд┐рдд рдФрд░ рдЕрдШреЛрд╖рд┐рдд рдЪрд░ рдХрд╛ рдорд┐рд╢реНрд░рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдПрдХ рдРрд╕реА рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрд╛рдо рдЖ рд╕рдХрддреА рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░
рдпрджрд┐ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд▓рдВрдмреА рд╕реВрдЪреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
prettyPrint( { title: 'Enhanced Object Literals', publisher: { name: 'SitePoint', url: 'https://www.sitepoint.com/' } } );
ES5 рдореЗрдВ, рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдпрджрд┐ рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВ, рдЬрд┐рдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ:
// ES5, function prettyPrint(param) { param = param || {}; var pubTitle = param.title || 'No title', pubName = (param.publisher && param.publisher.name) || 'No publisher'; return pubTitle + ', ' + pubName; }
ES6 рдореЗрдВ, рдХрд┐рд╕реА рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
// ES6 - function prettyPrint(param = {}) { ... }
рддрдм рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдорд╛рди рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
// ES6 function prettyPrint( { title: pubTitle = 'No title', publisher: { name: pubName = 'No publisher' } } = {} ) { return `${pubTitle}, ${pubName}`; }
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрдврд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред
рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП
рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗрд╡рд▓ рдПрдХ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рди рд╕реИрдХрдбрд╝реЛрдВ рдЧреБрдгреЛрдВ рдпрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред ES5 рдореЗрдВ, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд▓реМрдЯреА рд╣реБрдИ рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреА рдереА, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЖрдк рдЗрд╕рдореЗрдВ рд╕реЗ рдорд╛рди рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рдереЗ:
рдкреБрдирд░реНрдЧрдарди рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред рдЕрдм рдпрд╣ рд╕рдм рдПрдХ рдЕрд▓рдЧ рдЪрд░ рдореЗрдВ рд╡рд╕реНрддреБ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ:
рдЖрдкрдиреЗ Node.js. рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓
fs
рдореЙрдбреНрдпреВрд▓ рдХреА
readFile()
рдФрд░
readFile()
writeFile()
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрдирд╕реЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
// ES6 Node.js const { readFile, writeFile } = require('fs'); readFile('file.txt', (err, data) => { console.log(err || data); }); writeFile('new.txt', 'new content', err => { console.log(err || 'file written'); });
рд╢реЗрд╖ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдСрдкрд░реЗрдЯрд░ ES2018 (ES9)
= ES2015 рдореЗрдВ, рд╢реЗрд╖ рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ (рджреЛрдиреЛрдВ рддреАрди рдбреЙрдЯреНрд╕ рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ,
тАж
) рдХреЗрд╡рд▓ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдереЗред ES2018 рдореЗрдВ, рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
const myObject = ; const = myObject;
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд╛рдиреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
function restParam({ a, ...x }) {
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЖрдк рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рдореЗрдВ рддреАрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
const obj1 = , obj2 = ;
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдХреНрд▓реЛрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (
obj2 = { ...obj1 };
), рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдПрдХ рдЙрдерд▓реА рдкреНрд░рддрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдг рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ, рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдХреНрд▓реЛрди рд╕рдорд╛рди рдиреЗрд╕реНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдЧрд╛ред
рд╢реЗрд╖ рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЕрднреА рддрдХ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреНрд░реЛрдо рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЬрдм Node.js рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдВрд╕реНрдХрд░рдг 8.6 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо
рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдмреНрджрд┐рдХ рд╣рдореЗрд╢рд╛ рдПрдХ рдЙрдкрдпреЛрдЧреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрд╡рд┐рдзрд╛ рд░рд╣реА рд╣реИред ES2015 рдорд╛рдирдХ рдХреЗ рдмрд╛рдж рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдирд╡рд╛рдЪрд╛рд░ рдореМрд▓рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд▓рд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╕рдордп рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрд╡рдЪреНрдЫ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдЬреЗрдПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдХреМрди рд╕реЗ рддрд░реАрдХреЗ рдЖрдк рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?
