рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ OOP рдХреЛ рд╕рдордЭрдирд╛ [рднрд╛рдЧ 1]

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

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

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

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

1. рд╡рд╕реНрддреБ


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдХреЗрд╡рд▓ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ (рдФрд░ рдХрднреА-рдХрднреА рдЖрдВрддрд░рд┐рдХ рдЬрд╛рджреВ рдХреА рдПрдХ рдмрд┐рдЯ) рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИред

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

рдЖрдк рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ, "рдпрд╣ рдХреИрд╕реЗ рд╣реИ?", рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдХреНрд▓рд╛рд╕рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рднрд╛рд╖рд╛рдУрдВ (рдЬреИрд╕реЗ рдЬрд╛рд╡рд╛ рдпрд╛ рд╕реА #) рдХреА рджреБрдирд┐рдпрд╛ рд╕реЗ рдЖрддреЗ рд╣реИрдВред "рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдХрд╛ рдЕрдкрдирд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИ (рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп), рддреЛ рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ 100 рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ, рддреЛ 100 рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рдЙрдирдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ? рдХреНрдпрд╛ рдпрд╣ рдЦрддрд░рдирд╛рдХ рдирд╣реАрдВ рд╣реИ? рдФрд░ рдореБрдЭреЗ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд╕реНрддреБ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдРрд░реЗ рд╣реИ ? "

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

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

1.1ред рдФрд░ рд╡рд╕реНрддреБрдПрдВ рдХреНрдпрд╛ рд╣реИрдВ?

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

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

рдПрдХ рдЦрд╛рд▓реА рд╡рд╕реНрддреБ рдПрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдмрд┐рдирд╛, рдЧреБрдгреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рдЖрдЗрдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдРрд╕реА рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рджреЗрдЦреЗрдВ:
var mikhail = Object.create(null) 


1.2ред рд╕рдВрдкрддреНрддрд┐ рдирд┐рд░реНрдорд╛рдг

рддреЛ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд╕реНрддреБ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЕрднреА рддрдХ рдЧреБрдг рдирд╣реАрдВ рд╣реИрдВ - рд╣рдореЗрдВ рдЕрдкрдиреА рдорд┐рдЦрд╛рдЗрд▓ рд╡рд╕реНрддреБ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧреБрдг рдЧрддрд┐рд╢реАрд▓ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рд╕рдордп рдмрдирд╛ рдпрд╛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЧреБрдг рдЗрд╕ рдорд╛рдпрдиреЗ рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрдВ рдХрд┐ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреБрдВрдЬреА рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдореВрд▓реНрдп рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред

рд╣рдо Object.defineProperty рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирдП рдЧреБрдг рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддрд╛ рд╣реИ, рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рдФрд░ рдПрдХ рд╣реИрдВрдбрд▓ рдЬреЛ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
 Object.defineProperty(mikhail, 'name', { value: 'Mikhail' , writable: true , configurable: true , enumerable: true }) Object.defineProperty(mikhail, 'age', { value: 19 , writable: true , configurable: true , enumerable: true }) Object.defineProperty(mikhail, 'gender', { value: 'Male' , writable: true , configurable: true , enumerable: true }) 

Object.defineProperty рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдирдИ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рддрд╛ рд╣реИ рдпрджрд┐ рджреА рдЧрдИ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд╕рдВрдкрддреНрддрд┐ рдкрд╣рд▓реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рдереА (рдЕрдиреНрдпрдерд╛, рдореМрдЬреВрджрд╛ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдФрд░ рдореВрд▓реНрдп рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ)ред

рд╡реИрд╕реЗ, рдЖрдк Object.defineProperties рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЖрдкрдХреЛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
 Object.defineProperties(mikhail, { name: { value: 'Mikhail' , writable: true , configurable: true , enumerable: true } , age: { value: 19 , writable: true , configurable: true , enumerable: true } , gender: { value: 'Male' , writable: true , configurable: true , enumerable: true }}) 

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рджреЛрдиреЛрдВ рдХреЙрд▓ рд╕рдорд╛рди рд╣реИрдВ, рд╡реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЗ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИрдВред рдЙрдирдХреЗ рдКрдкрд░ рдПрдХ рдЕрдореВрд░реНрдд рдкрд░рдд рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

1.3ред рд╡рд░реНрдгрдирдХрд░реНрддрд╛

рдЫреЛрдЯреА рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдЬреЛ рд╢рдмреНрджрд╛рд░реНрде рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рдордиреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред ObjectfdeineProperty )ред рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░реНрд╕ рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ - рдбреЗрдЯрд╛ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдФрд░ рдПрдХреНрд╕реЗрд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ред

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

рдХреБрдЫ рдЭрдВрдбреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


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

рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред

1.4ред рд╕рд╣рдорддрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╡рд┐рд╡рд░рдгрдХрд░реНрддрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИрдВ - рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рднреА рдХреЛрд╖реНрдардХ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИред рдореВрд▓ рдирд┐рдпрдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ:
 <bracket-access> ::= <identifier> "[" <expression> "]" 

рдпрд╣рд╛рдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдПрдХ рдЪрд░ рд╣реИ рдЬреЛ рдПрдХ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рд╣рдо рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд┐рд╕реА рднреА рдорд╛рдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬреЛ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИред рд╕рдВрдкрддреНрддрд┐ рдХрд┐рд╕ рдирд╛рдо рдкрд░ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕ рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ;

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
 mikhail['name'] = 'Mikhail' mikhail['age'] = 19 mikhail['gender'] = 'Male' 

рдиреЛрдЯ: рд╕рднреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдЕрдВрддрддрдГ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдСрдмреНрдЬреЗрдХреНрдЯ [1] , рдСрдмреНрдЬреЗрдХреНрдЯ [[1]] , рдСрдмреНрдЬреЗрдХреНрдЯ ['1'] рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ [рд╡реЗрд░рд┐рдПрдмрд▓] (рдЬрд╣рд╛рдБ рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдорд╛рди 1 рд╣реИ) рдмрд░рд╛рдмрд░ рд╣реИрдВред

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

рд╕реНрдкреЙрдЯ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо:
 <dot-access> ::= <identifier> "." <identifier-name> 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкрд┐рдЫрд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдФрд░ рднреА рд╕реБрдВрджрд░ рд╣реЛ рдЧрдпрд╛:
 mikhail.name = 'Mikhail' mikhail.age = 19 mikhail.gender = 'Male' 

рджреЛрдиреЛрдВ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд┐рдХрд▓реНрдк рдЧреБрдгреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рд╕рдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЕрд░реНрде рдХреЗ рдЭрдВрдбреЗ рд╕рд╣реА рд╣реИрдВ ред

1.5ред рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ

рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдирд╣реАрдВ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдореАрд╢рд╛ рдХреА рдЖрдпреБ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд▓рд┐рдЦреЗрдВрдЧреЗ:
 mikhail['age'] // => 19 

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рдкрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ :
 mikhail['address'] // => undefined 


1.6ред рдЧреБрдг рд╣рдЯрд╛рдирд╛

рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдХрд┐рд╕реА рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, JavaSCript рдПрдХ рдбрд┐рд▓реАрдЯ рдСрдкрд░реЗрдЯрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рд╣рдорд╛рд░реА рдорд┐рдЦрд╛рдЗрд▓ рд╡рд╕реНрддреБ рд╕реЗ рд▓рд┐рдВрдЧ рд╕рдВрдкрддреНрддрд┐ рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
 delete mikhail['gender'] // => true mikhail['gender'] // => undefined 

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

1.6ред рдЧреЗрдЯрдПрдЯрд░ рдФрд░ рд╕реЗрдЯрд░

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

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

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреБрдХреНрдд рдЧреБрдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП, рд╣рдорд╛рд░реЗ рдорд┐рддреНрд░ рдХрд╛ рдирд╛рдо рдФрд░ рдЙрдкрдирд╛рдо рдмрдирд╛рдПрдБ:
 Object.defineProperty(mikhail, 'first_name', { value: 'Mikhail' , writable: true }) Object.defineProperty(mikhail, 'last_name', { value: 'Wei├Я' , writable: true }) 

рдлрд┐рд░ рд╣рдо рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛ рдЧреБрдгреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ - рдЪрд▓реЛ рдЙрдирдХреЗ рд╕рдВрдШ рдирд╛рдо рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ:
 // () тЖТ String // Returns the full name of object. function get_full_name() { return this.first_name + ' ' + this.last_name } // (new_name:String) тЖТ undefined // Sets the name components of the object, from a full name. function set_full_name(new_name) { var names names = new_name.trim().split(/\s+/) this.first_name = names[тБг'0'] || '' this.last_name = names['1'] || '' } Object.defineProperty(mikhail, 'name', { get: get_full_name , set: set_full_name , configurable: true , enumerable: true }) 

рдЕрдм, рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рдЕрдкрдиреЗ рджреЛрд╕реНрдд рдХреА рдирд╛рдо рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ get_full_name рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ :
 mikhail.name // => 'Mikhail Wei├Я' mikhail.first_name // => 'Mikhail' mikhail.last_name // => 'Wei├Я' mikhail.last_name = 'White' mikhail.name // => 'Mikhail White' 

рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдирд╛рдо рднреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ set_full_name рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рд╕рднреА рдЧрдВрджреЗ рдХрд╛рдо рд╣реЛрдВрдЧреЗ:
 mikhail.name = 'Michael White' mikhail.name // => 'Michael White' mikhail.first_name // => 'Michael' mikhail.last_name // => 'White' 

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

1.8ред рд╕рдВрдкрддреНрддрд┐ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ

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

рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ Object.getOwnPropertyNames рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╕рднреА рдЧреБрдгреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рд╕реЗ рдпреБрдХреНрдд рдПрдХ рдПрд░реЗ рдХреЛ рд▓реМрдЯрд╛рдПрдЧрд╛ - рд╣рдо рдЗрди рдЧреБрдгреЛрдВ рдХреЛ рдЕрдкрдирд╛ рдХрд╣реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо рдорд┐рд╢рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ:
 Object.getOwnPropertyNames(mikhail) // => [ 'name', 'age', 'gender', 'first_name', 'last_name' ] 

рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ Object.keys рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ , рдЬреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд▓реМрдЯрд╛рдПрдЧрд╛ рдЬреЛ рдХрд┐ рдЕрд╕рдВрдЦреНрдп рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд╣реИрдВ:
 Object.keys(mikhail) // => [ 'name', 'age', 'gender' ] 


1.9ред рд╢рд╛рдмреНрджрд┐рдХ

рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╕реНрддреБ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЕрднрд┐рднрд╛рд╡рдХ Object.prototype рд╣реИ (рд╣рдо рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ)ред

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЖрдкрдХреЛ рд╕рд░рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдо рдорд┐рдЦрд╛рдЗрд▓ рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
 var mikhail = { first_name: 'Mikhail' , last_name: 'Wei├Я' , age: 19 , gender: 'Male' // () тЖТ String // Returns the full name of object. , get name() { return this.first_name + ' ' + this.last_name } // (new_name:String) тЖТ undefined // Sets the name components of the object, // from a full name. , set name(new_name) { var names names = new_name.trim().split(/\s+/) this.first_name = names['0'] || '' this.last_name = names['1'] || '' } } 


рдЕрд╡реИрдз рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рдореЗрдВ рдЧреЗрдЯреНрдЯрд░ / рд╕реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдЕрдирд╛рдо рдХрд╛рд░реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдкреВрд░реНрд╡ рдШреЛрд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЧреЗрдЯрдЯрд░ / рд╕реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ Object.defineProperty рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЖрдЗрдП рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдореЛрдВ рдХреЛ рджреЗрдЦреЗрдВ:
 <object-literal> ::= "{" <property-list> "}" ; <property-list> ::= <property> ["," <property>]* ; <property> ::= <data-property> | <getter-property> | <setter-property> ; <data-property> ::= <property-name> ":" <expression> ; <getter-property> ::= "get" <identifier> : <function-parameters> : <function-block> ; <setter-property> ::= "set" <identifier> : <function-parameters> : <function-block> ; <property-name> ::= <identifier> | <quoted-identifier> ; 

рд╢рд╛рдмреНрджрд┐рдХ рд╡рд╕реНрддреБрдПрдБ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЕрдВрджрд░ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреА рд╣реИрдВред рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдХрд╛рд░рдг, рд╢реБрд░реБрдЖрддреА рдХрднреА-рдХрднреА рднреНрд░рдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:
 // This is a block statement, with a label: { foo: 'bar' } // => 'bar' // This is a syntax error (labels can't be quoted): { "foo": 'bar' } // => SyntaxError: Invalid label // This is an object literal (note the parenthesis to force // parsing the contents as an expression): ({ "foo": 'bar' }) // => { foo: 'bar' } // Where the parser is already expecting expressions, // object literals don't need to be forced. Eg: var x = { foo: 'bar' } fn({foo: 'bar'}) return { foo: 'bar' } 1, { foo: 


2. рддрд░реАрдХреЗ


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

рд╣рдо рдХреЗрд╡рд▓ рдЕрдкрдиреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рд╕реЗрдЯ рдХрд░рдХреЗ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореАрд╢рд╛ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд░реЗ:
 // (person:String) тЖТ String // Greets a random person mikhail.greet = function(person) { return this.name + ': Why, hello there, ' + person + '.' } 

рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдп рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЗрд╕рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд▓рд┐рдВрдХ рд▓реМрдЯрд╛ рджреЗрдЧреА, рдЬрд┐рд╕реЗ рд╣рдо рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 mikhail.greet('you') // => 'Michael White: Why, hello there, you.' mikhail.greet('Kristin') // => 'Michael White: Why, hello there, Kristin.' 


2.1ред рдЗрд╕реЗ рдЧрддрд┐рд╢реАрд▓ рдХрд░реЗрдВ

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

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

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

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

2.2ред рдпрд╣ рдЕрдиреБрдорддрд┐

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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рд▓реЗрдВрдЧреЗ:
 // Returns the sum of the object's value with the given Number function add(other, yet_another) { return this.value + other + (yet_another || 0) } var one = { value: 1, add: add } var two = { value: 2, add: add } 


2.2.1 рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░реЗрдВ

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

рдпрд╣ рддрдм рд╣реЛрдЧрд╛ рдЬрдм рд╣рдо mikhail.greet () рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ ред рдпрд╣ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рд╣рдо рдорд┐рдЦрд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдЕрднрд┐рд╡рд╛рджрди рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
 one.add(two.value) // this === one // => 3 two.add(3) // this === two // => 5 one['add'](two.value) // brackets are cool too // => 3 


2.2.2 рдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЙрд▓

рдЬрдм рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реАрдзреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЗрдВрдЬрди рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ (рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╡рд┐рдВрдбреЛ , рдЧреНрд▓реЛрдмрд▓ рдореЗрдВ Node.js) рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
 add(two.value) // this === global // => NaN // The global object still has no `value' property, let's fix that. value = 2 add(two.value) // this === global // => 4 


2.2.3ред рд╕реНрдкрд╖реНрдЯ рдЖрд╡реЗрджрди

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

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

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЙрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд╣рд▓реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдореВрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рдХреЗ рдмрд╛рдж:
 add.call(two, 2, 2) // this === two // => 6 add.call(window, 4) // this === global // => 6 add.call(one, one.value) // this === one // => 2 

рджреВрд╕рд░реА рдУрд░, рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рдореВрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 add.apply(two, [2, 2]) // equivalent to two.add(2, 2) // => 6 add.apply(window, [ 4 ]) // equivalent to add(4) // => 6 add.apply(one, [one.value]) // equivalent to one.add(one.value) // => 2 

рдПрдХ рдиреЛрдЯ рдХреЗ рд▓рд┐рдПред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрд╢рдХреНрдд рдпрд╛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдореЗрдВ рдпрд╣ рдЕрдиреБрдорддрд┐ рдкреНрд░рдпреБрдХреНрдд рдЗрдВрдЬрди рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЗрдВрдЬрди рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ , рддреЛ рдпрд╣ рдЙрдореНрдореАрдж рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ - рдареАрдХ рдЙрд╕реА рдЪреАрдЬ рдореЗрдВ рдЬрд┐рд╕ рдкрд░ рдпрд╣ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ:
 window.value = 2 add.call(undefined, 1) // this === window // => 3 void function() { "use strict" add.call(undefined, 1) // this === undefined // => NaN // Since primitives can't hold properties. }() 


2.3ред рд╡рд┐рдзрд┐ рдмрдВрдзрди

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

рдлрд╝рдВрдХреНрд╢рди рдмрд╛рдЗрдВрдб рдирд╛рдордХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ (рдмрд╣реБрдд рд╣реА рдХреЙрд▓рд┐рдВрдЧ рдХреЙрд▓ рдХреЗ рд╕рдорд╛рди рд╣реИ) рдФрд░ рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИ рдЬреЛ рдореВрд▓ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ рдЬрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 var one_add = add.bind(one) one_add(2) // this === one // => 3 two.one_adder = one_add two.one_adder(2) // this === one // => 3 one_add.call(two) // this === one // => 3 


3. рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо


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

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

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЙрдбрд▓ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдпрд╣ "рдЪрдпрдирд╛рддреНрдордХ рддрдиреНрдордпрддрд╛" рдФрд░ "рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рд╛рдЭрд╛рдХрд░рдг" рдЬреИрд╕реА рддрдХрдиреАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдирдХрд╛ рдЕрдзреНрдпрдпрди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рджреБрдЦрдж рдмрд╛рдд: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд╛рдЧреВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк OO рдореЙрдбрд▓ рдХреБрдЫ рд╣рдж рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВред рд╣рдо рдЗрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдУрд╡рд░рд╣реЗрдб рдорд╣рд╛рди рд╣реЛрдЧрд╛ред

3.1ред рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХреНрд▓реЛрди рдХрд░рдХреЗ рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдХреЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд┐рд╕ рд╡рд╕реНрддреБ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЙрд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реИ - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

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

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреИрд░реЗрдВрдЯ (рдпрд╛ [[рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк]] ) рдХреЛ рдПрдмреНрдЬреЗрдХреНрдЯ рдХреНрд░рд┐рдПрдЯ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рд╣рдо рдЗрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
 var person = Object.create(null) // Here we are reusing the previous getter/setter functions Object.defineProperty(person, 'name', { get: get_full_name , set: set_full_name , configurable: true , enumerable: true }) // And adding the `greet' function person.greet = function (person) { return this.name + ': Why, hello there, ' + person + '.' } // Then we can share those behaviours with Mikhail // By creating a new object that has it's [[Prototype]] property // pointing to `person'. var mikhail = Object.create(person) mikhail.first_name = 'Mikhail' mikhail.last_name = 'Wei├Я' mikhail.age = 19 mikhail.gender = 'Male' // And we can test whether things are actually working. // First, `name' should be looked on `person' mikhail.name // => 'Mikhail Wei├Я' // Setting `name' should trigger the setter mikhail.name = 'Michael White' // Such that `first_name' and `last_name' now reflect the // previously name setting. mikhail.first_name // => 'Michael' mikhail.last_name // => 'White' // `greet' is also inherited from `person'. mikhail.greet('you') // => 'Michael White: Why, hello there, you.' // And just to be sure, we can check which properties actually // belong to `mikhail' Object.keys(mikhail) // => [ 'first_name', 'last_name', 'age', 'gender' ] 


рей.реи рд▓реЗрдХрд┐рди [Prot [рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк] ? ] рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

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

рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдореЗрдВ рдПрдХ рдЫрд┐рдкреЗ рд╣реБрдП рд╕реНрд▓реЙрдЯ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ [defined [рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк] parents] рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рд╕реАрдзреЗ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рддрд░реАрдХрд╛ рд╣реИ - рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рддреЗ рд╕рдордпред

рдЬрдм рдХрд┐рд╕реА рд╡рд╕реНрддреБ рд╕реЗ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрдВрдЬрди рдкрд╣рд▓реЗ рд▓рдХреНрд╖реНрдп рд╕реЗ рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИ, рддреЛ рд╡рд╕реНрддреБ рдХреЗ рддрддреНрдХрд╛рд▓ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдЖрджрд┐ред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдмреАрдЪ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЙрди рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреЛ рдЗрд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдерд╛, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЧреНрд░реАрдЯрд┐рдВрдЧ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
 // (person:String) тЖТ String // Greets the given person person.greet = function(person) { return this.name + ': Harro, ' + person + '.' } mikhail.greet('you') // => 'Michael White: Harro, you.' 


3.3ред рд╕рдВрдкрддреНрддрд┐ рдЕрдзрд┐рднрд╛рд░

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

, ? , тАФ .

, Person , Person . , :


, mikhail , kristin greet . greet , greet , Person :
 // Here we set up the greeting for a generic person // (person:String) тЖТ String // Greets the given person, formally person.greet = function(person) { return this.name + ': Hello, ' + (person || 'you') } // And a greeting for our protagonist, Mikhail // (person:String) тЖТ String // Greets the given person, like a bro mikhail.greet = function(person) { return this.name + ': \'sup, ' + (person || 'dude') } // And define our new protagonist, Kristin var kristin = Object.create(person) kristin.first_name = 'Kristin' kristin.last_name = 'Wei├Я' kristin.age = 19 kristin.gender = 'Female' // Alongside with her specific greeting manners // (person:String) тЖТ String // Greets the given person, sweetly kristin.greet = function(person) { return this.name + ': \'ello, ' + (person || 'sweetie') } // Finally, we test if everything works according to the expected mikhail.greet(kristin.first_name) // => 'Michael White: \'sup, Kristin' mikhail.greet() // => 'Michael White: \'sup, dude' kristin.greet(mikhail.first_name) // => 'Kristin Wei├Я: \'ello, Michael' // And just so we check how cool this [[Prototype]] thing is, // let's get Kristin back to the generic behaviour delete kristin.greet // => true kristin.greet(mikhail.first_name) // => 'Kristin Wei├Я: Hello, Michael' 


...

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


All Articles