рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ: рд╡рд╕реНрддреБрдУрдВ рдХреА рдЦреЛрдЬ

рд╕рд╛рдордЧреНрд░реА, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкреНрд░рдореБрдЦ рдирд┐рдмрдВрдзреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╢реБрд░реБрдЖрддреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред



рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд╕реНрддреБрдПрдВ рдЧреБрдгреЛрдВ рдХрд╛ рдЧрддрд┐рд╢реАрд▓ рд╕рдВрдЧреНрд░рд╣ рд╣реИрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ "рдЫрд┐рдкреА рд╣реБрдИ" рд╕рдВрдкрддреНрддрд┐ рд╣реЛрддреА рд╣реИ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЧреБрдг рдХреБрдВрдЬрд┐рдпреЛрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЖрдЗрдП, JS рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рд╢реБрд░реВ рдХрд░реЗрдВред

рд╡рд╕реНрддреБ рд╕рдВрдкрддреНрддрд┐ рдХреБрдВрдЬреА


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

let obj = {  message : "A message" } obj.message //"A message" obj["message"] //"A message" 

рдЬрдм рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЧреИрд░-рдореМрдЬреВрдж рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди undefined рдорд╛рди рдХреЛ рд▓реМрдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

 obj.otherProperty //undefined 

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

 let french = {}; french["merci beaucoup"] = "thank you very much"; french["merci beaucoup"]; //"thank you very much" 

рдпрджрд┐ рдЧреИрд░-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рдиреЛрдВ рдХреЛ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ (рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, toString() рд╡рд┐рдзрд┐):

 et obj = {}; //Number obj[1] = "Number 1"; obj[1] === obj["1"]; //true //Object let number1 = { toString : function() { return "1"; } } obj[number1] === obj["1"]; //true 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ number1 рдХреЛ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЙрд╕реЗ рд▓рд╛рдЗрди 1 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рд╡реИрд▓реНрдпреВ


рд╡рд╕реНрддреБ рдЧреБрдг рдЖрджрд┐рдо рдореВрд▓реНрдп, рд╡рд╕реНрддреБ рдпрд╛ рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

Value рдПрдХ рд╡рд╕реНрддреБ рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВ


рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 let book = { title : "The Good Parts", author : {   firstName : "Douglas",   lastName : "Crockford" } } book.author.firstName; //"Douglas" 

рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╛рдорд╕реНрдерд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 let app = {}; app.authorService = { getAuthors : function() {} }; app.bookService = { getBooks : function() {} }; 

Value рдПрдХ рд╡рд╕реНрддреБ рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп


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

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдХреАрд╡рд░реНрдб рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрд░реНрде рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреИрд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣рд╛рдВ рдЖрдк рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ this рд╕рдВрджрд░реНрдн рдЦреЛ рджреЗрддрд╛ рд╣реИред

рд╡рд╕реНрддреБрдУрдВ рдХреА рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХреГрддрд┐


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

 let obj = {}; obj.message = "This is a message"; //   obj.otherMessage = "A new message"; //    delete obj.otherMessage; //  

рд╕рд╣рдпреЛрдЧреА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╕реНрддреБрдПрдБ


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

рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк


рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдПрдХ "рдЫрд┐рдкрд╛ рд╣реБрдЖ" рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИ, __proto__ , рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд╢рд╛рдмреНрджрд┐рдХ рдкреНрд░рдпреЛрдЧ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╡рд╕реНрддреБ рдореЗрдВ Object.prototype рд▓рд┐рдВрдХ Object.prototype :

 var obj = {}; obj.__proto__ === Object.prototype; //true 

Objects рдЦрд╛рд▓реА рд╡рд╕реНрддреБрдПрдВ


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдЕрднреА рджреЗрдЦрд╛, "рдЦрд╛рд▓реА" рд╡рд╕реНрддреБ, {} , рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрддрдиреА рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ Object.prototype рд╕рдВрджрд░реНрдн рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрд╛рд▓реА рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 Object.create(null) 

рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдорддреМрд░ рдкрд░ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Chain рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЪреЗрди


рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдРрд╕реА рд╡рд╕реНрддреБ рдХреА рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЗрд╕ рд╡рд╕реНрддреБ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдЧрд╛, рдФрд░ рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рддрдм рддрдХ рдЬрд╛рд░реА рд░рд╣реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рдорд┐рд▓ рдЬрд╛рддреА рд╣реИ, рдпрд╛ рдЬрдм рддрдХ рдХрд┐ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЕрдВрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдорд╛рди рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд░реИрдкрд░реНрд╕


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

 (1.23).toFixed(1); //"1.2" "text".toUpperCase(); //"TEXT" true.toString(); //"true" 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИрдВред

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

рдСрдмреНрдЬреЗрдХреНрдЯ рд░реИрдкрд░ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдпреЛрдВ Number , String рдФрд░ Boolean ред

рдПрдВрдмреЗрдбреЗрдб рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк


рд╕рдВрдЦреНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реЗ рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ Number.prototype , рдЬреЛ Number.prototype рдХрд╛ рд╡рдВрд╢рдЬ рд╣реИ:

 var no = 1; no.__proto__ === Number.prototype; //true no.__proto__.__proto__ === Object.prototype; //true 

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк String.prototype ред рдмреВрд▓рд┐рдпрди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк Boolean.prototype ред рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк (рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рднреА рд╣реИрдВ) Array.prototype ред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рдВрд╕ рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк Function.prototype ред рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдкред рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ bind() , apply() рдФрд░ call() рдЬреИрд╕реЗ рддрд░реАрдХреЗ рд╣реИрдВред

рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рдлрд╝рдВрдХреНрд╢рдВрд╕, рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдиреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ ( null рдФрд░ undefined рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░) Object.prototype рд╕реЗ рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗ рд╕рднреА рдПрдХ toString() рд╡рд┐рдзрд┐ рд╣реИред

рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЗ рд╕рд╛рде рдПрдореНрдмреЗрдбреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдерд╛рдХрдерд┐рдд рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдореНрдмреЗрдбреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдПрдХ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИ рдЬреЛ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред

рдкреЙрд▓реАрдлрд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ


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

рд╡рд╣реА Array.from() рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ, рдЕрдЧрд░ from() рд╡рд┐рдзрд┐ Array рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЗрд╕ рд╡рд┐рдзрд┐ рд╕реЗ рд▓реИрд╕ рдХрд░рддрд╛ рд╣реИред

тЦН рдкреЙрд▓рд┐рдлрд╝рд┐рд▓ рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк


рдкреЙрд▓реАрдлрд┐рд▓реНрд╕ рдХреА рдорджрдж рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдирдП рддрд░реАрдХреЗ рдЬреЛрдбрд╝реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, String.prototype.trim() рд▓рд┐рдП String.prototype.trim() рдЖрдкрдХреЛ trim() рд╕рд╛рде рд╕рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд▓реИрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

 let text = "   A text "; text.trim(); //"A text" 

Array.prototype.find() рд▓рд┐рдП Array.prototype.find() рдЖрдкрдХреЛ рд╕рднреА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ find() рд╡рд┐рдзрд┐ рд╕реЗ рд▓реИрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред Array.prototype.findIndex() рд▓рд┐рдП Array.prototype.findIndex() рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

 let arr = ["A", "B", "C", "D", "E"]; arr.indexOf("C"); //2 

рдПрдХрд▓ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо


Object.create() рдХрдорд╛рдВрдб рдЖрдкрдХреЛ рджрд┐рдП рдЧрдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдирдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХрд▓ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 let bookPrototype = { getFullTitle : function(){   return this.title + " by " + this.author; } } let book = Object.create(bookPrototype); book.title = "JavaScript: The Good Parts"; book.author = "Douglas Crockford"; book.getFullTitle();//JavaScript: The Good Parts by Douglas Crockford 

рдПрдХрд╛рдзрд┐рдХ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо


Object.assign() рдХрдорд╛рдВрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд▓рдХреНрд╖реНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рд╡рд┐рд░рд╛рд╕рдд рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ :

 let authorDataService = { getAuthors : function() {} }; let bookDataService = { getBooks : function() {} }; let userDataService = { getUsers : function() {} }; let dataService = Object.assign({}, authorDataService, bookDataService, userDataService ); dataService.getAuthors(); dataService.getBooks(); dataService.getUsers(); 

рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдПрдБ


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

 "use strict"; let book = Object.freeze({ title : "Functional-Light JavaScript", author : "Kyle Simpson" }); book.title = "Other title";//: Cannot assign to read only property 'title' 

Object.freeze() рдХрдорд╛рдВрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рддрдерд╛рдХрдерд┐рдд "рдЙрдерд▓реЗ рдардВрдб" рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреЛ "рдЬрдореЗ рд╣реБрдП" рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдШреЛрдВрд╕рд▓рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ "рдбреАрдк рдлреНрд░реАрдЬ" рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕рдХреЗ рд╕рднреА рдЧреБрдгреЛрдВ рдХреЛ рдкреБрди: "рдлреНрд░реАрдЬ" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреНрд▓реЛрдирд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕


рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреНрд▓реЛрди (рдХреЙрдкреА) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк Object.assign() рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 let book = Object.freeze({ title : "JavaScript Allong├й", author : "Reginald Braithwaite" }); let clone = Object.assign({}, book); 

рдпрд╣ рдХрдорд╛рдВрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЙрдерд▓реА рдирдХрд▓ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рдХреЗрд╡рд▓ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдЧреБрдгреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИред рдиреЗрд╕реНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдореВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдЙрдирдХреА рдкреНрд░рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

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


рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реАрдзрд╛ рддрд░реАрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 let timer = { fn : null, start : function(callback) { this.fn = callback; }, stop : function() {}, } 

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдиреБрдХрд╕рд╛рди рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рднреА рдЧреБрдг рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирдП рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 timer.fn;//null timer.start = function() { console.log("New implementation"); } 

Object.create () рд╡рд┐рдзрд┐


рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рджреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ Object.create() рдФрд░ Object.freeze() рдХреЗ рд╕рдВрдпреБрдХреНрдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рдо рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдЬрдореЗ рд╣реБрдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк timerPrototype рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдЬреЛ timerPrototype рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╣реИ:

 let timerPrototype = Object.freeze({ start : function() {}, stop : function() {} }); let timer = Object.create(timerPrototype); timer.__proto__ === timerPrototype; //true 

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

 "use strict"; timer.start = function() { console.log("New implementation"); } //: Cannot assign to read only property 'start' of object 

Object.create(timerPrototype) рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╣реА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдХрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рддрдерд╛рдХрдерд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рд╣реИрдВ, рдЬреЛ рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдЪрд░рдгреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП "рд╡рд╛рдХреНрдпрдЧрдд рдЪреАрдиреА" рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 function Timer(callback){ this.fn = callback; } Timer.prototype = { start : function() {}, stop : function() {} } function getTodos() {} let timer = new Timer(getTodos); 

рдЖрдк рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ new рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рдирдХреЙрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдирд╛рдордХ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдПрдХ FunctionConstructor.prototype рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛:

 let timer = new Timer(); timer.__proto__ === Timer.prototype; 

рдпрд╣рд╛рдВ, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд┐рд░ рд╕реЗ, рдЖрдк рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдлреНрд░реАрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 Timer.prototype = Object.freeze({ start : function() {}, stop : function() {} }); 

New рдХреАрд╡рд░реНрдб рдирдпрд╛


рдЬрдм new Timer() рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ new Timer() рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдХрд╛рд░реНрдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 function newTimer(){ let newObj = Object.create(Timer.prototype); let returnObj = Timer.call(newObj, arguments); if(returnObj) return returnObj;   return newObj; } 

рдпрд╣рд╛рдВ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк Timer.prototype ред рдлрд┐рд░ Timer рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдирдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рд╕реЗрдЯ рдХрд░рдирд╛ред

рдХреНрд▓рд╛рд╕ рдХрд╛ рдХреАрд╡рд░реНрдб


ECMAScript 2015 рдиреЗ рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ рдкреЗрд╢ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ тАЬрд╕рд┐рдиреНрдЧрдиреЗрдЯрд┐рдХ рд╢реБрдЧрд░тАЭ рдХрд╛ рдПрдХ рдФрд░ рдмреИрдЪ рд╣реИред рд╣рдо class рдХреАрд╡рд░реНрдб рдФрд░ рдЙрд╕рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 class Timer{ constructor(callback){   this.fn = callback; } start() {} stop() {} } Object.freeze(Timer.prototype); 

ClassName рд╡рд░реНрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ class рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк ClassName.prototype ред рдХрдХреНрд╖рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, new рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 let timer= new Timer(); timer.__proto__ === Timer.prototype; 

рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рддрд░рд╣ "рд╕реНрдерд┐рд░" рд╣реЛрдирд╛ рд╣реЛрдЧрд╛, рдЬреИрд╕рд╛ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд┐рдпрд╛ рдерд╛:

 Object.freeze(Timer.prototype); 

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЖрдзрд╛рд░рд┐рдд рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо


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

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рдФрд░ рдХрдХреНрд╖рд╛рдПрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдмрдирд╛ рд╕рдХреЗрдВред

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдХреА рддрд╛рдХрдд рдореЗрдореЛрд░реА рд╕реЗрд╡рд┐рдВрдЧ рд╣реИрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

тЦН рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рддрдВрддреНрд░ рдХреА рдХрдореА рдХреА рд╕рдорд╕реНрдпрд╛


рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рдЬреА рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рднреА рдЧреБрдг рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Object.keys() рдХрдорд╛рдВрдб рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рднреА рд╕рдВрдкрддреНрддрд┐ рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд╕рднреА рдЧреБрдгреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 function logProperty(name){ console.log(name); //  console.log(obj[name]); //  } Object.keys(obj).forEach(logProperty); 

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

 class Timer{ constructor(callback){   this._fn = callback;   this._timerId = 0; } } 

рдлреИрдХреНрдЯрд░реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ


рдлреИрдХреНрдЯреНрд░реА рдлрдВрдХреНрд╢рдиреНрд╕ рдХреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдирдХреНрд░рд┐рдкреНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 function TodoStore(callback){   let fn = callback;     function start() {},   function stop() {}     return Object.freeze({      start,      stop   }); } 

рдпрд╣рд╛рдБ рдЪрд░ fn рдирд┐рдЬреА рд╣реИред рдХреЗрд╡рд▓ start() рдФрд░ stop() рд╡рд┐рдзрд┐рдпрд╛рдБ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, this рд╕рдВрджрд░реНрдн рдХреЛ рдЦреЛрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред

return рдХрдорд╛рдВрдб рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдмреНрджрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рд╡реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ API рдлреНрд░реАрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд Object.freeze() рдХрдорд╛рдВрдб рдХрд╛ Object.freeze() ред

рдпрд╣рд╛рдВ, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рд╣рдордиреЗ Timer рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдЖрдк рдЗрд╕рдХрд╛ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

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


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░реЛрдВ, рд╕рд╛рдзрд╛рд░рдг рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХреГрддрд┐ рд╣реЛрддреА рд╣реИ, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╡рд╛рд░рд┐рд╕ рд╣реИрдВред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдХрдХреНрд╖рд╛рдПрдВ "рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░" рд╣реИрдВ, рд╡реЗ рдЖрдкрдХреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЖрдк рдПрдХрд▓ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Object.create() рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ Object.create() рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Object.create() рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдлреИрд▓реЗ рд╣реБрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реИрдХреНрдЯрд░реА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдпрджрд┐ рдЖрдк рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдП рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдЬреЗрдПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд╛рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВред

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


All Articles