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

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд╕реНрддреБрдПрдВ рдЧреБрдгреЛрдВ рдХрд╛ рдЧрддрд┐рд╢реАрд▓ рд╕рдВрдЧреНрд░рд╣ рд╣реИрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ "рдЫрд┐рдкреА рд╣реБрдИ" рд╕рдВрдкрддреНрддрд┐ рд╣реЛрддреА рд╣реИ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЧреБрдг рдХреБрдВрдЬрд┐рдпреЛрдВ рдФрд░ рдореВрд▓реНрдпреЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЖрдЗрдП, JS рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рд╢реБрд░реВ рдХрд░реЗрдВред
рд╡рд╕реНрддреБ рд╕рдВрдкрддреНрддрд┐ рдХреБрдВрдЬреА
рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреА рдПрдХ рдЕрдиреВрдареА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рдЖрдк рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ рдЕрд╡рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдФрд░ рд╕реНрдХреНрд╡рд╛рдпрд░ рдмреНрд░реИрдХреЗрдЯ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреБрдВрдЬреА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ред рдЬрдм рдПрдХ рдбреЙрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрддреА рд╣реИ, рддреЛ рдХреБрдВрдЬреА рдХреЛ рдПрдХ рдорд╛рдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
let obj = { message : "A message" } obj.message //"A message" obj["message"] //"A message"
рдЬрдм рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЧреИрд░-рдореМрдЬреВрдж рд╕рдВрдкрддреНрддрд┐ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди
undefined
рдорд╛рди рдХреЛ рд▓реМрдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
obj.otherProperty
рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЪреМрдХреЛрд░ рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рдЙрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдорд╛рдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдВрдЬреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╣реЛ рд╕рдХрддреА рд╣реИ)ред рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЛрдИ рднреА рдореВрд▓реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
let french = {}; french["merci beaucoup"] = "thank you very much"; french["merci beaucoup"];
рдпрджрд┐ рдЧреИрд░-рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рдиреЛрдВ рдХреЛ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ (рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ,
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;
рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╛рдорд╕реНрдерд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
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;
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");
рдПрдХрд▓ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо
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();
рдПрдХрд╛рдзрд┐рдХ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо
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"); }
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()
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдлреИрд▓реЗ рд╣реБрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реИрдХреНрдЯрд░реА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдпрджрд┐ рдЖрдк рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдП рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдк рдЬреЗрдПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд╛рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВред
