(рдкреБрд░рд╛рд▓реЗрдЦ) рдорд╛рддреГреЗрд╢рдХрд╛.рдЬреЗрдПрд╕ v0.1

рд▓реЗрдЦ рдкреБрд░рд╛рдирд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдЗрддрд┐рд╣рд╛рд╕ рджреЗрдЦреЗрдВред


(рд╕рднреА рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдХреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)
рдХреЛрд╖

рд╕рд╛рдЗрдЯ (рдкреНрд░рд▓реЗрдЦрди рднреА рд╣реИ)

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



рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ Matryoshka рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпреЛрдЬрди рдХреА рд░реВрдкрд░реЗрдЦрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдорд╣рддреНрд╡ рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рд╣рд╛рд╡реА рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдкрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
Matryoshka рдбреЗрдЯрд╛ рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рддрддреНрд╡реЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд╕реНрддреБ рд╕рдВрдкрддреНрддрд┐ рдФрд░ рдПрдХ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рдореВрд▓реНрдп) рдХреЛ рдбреЗрдЯрд╛ рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рдЖрдЧреЗ рддреБрд▓реНрдпрдХрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдВрдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рд╕рд░рд▓ рдмрдВрдзрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
<select class="my-select"> <option>1</option> <option>2</option> <option>3</option> </select> 

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдБ:
 var mk = new Matreshka(); 

.my-select X- рдЧреБрдг рдХрд╛ .my-select :
 mk.bindElement( 'x', '.my-select' ); 

рдбреЗрдЯрд╛ рдмрджрд▓реЗрдВ
 mk.x = 2; 

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

рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдЧреБрдбрд╝рд┐рдпрд╛ рдХреА рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдШрдЯрдирд╛рдУрдВ (рдХрд╕реНрдЯрдо рд╡рд╛рд▓реЗ рд╕рд╣рд┐рдд) рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Matryoshka рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИ:
 mk.on( 'change:x', function( evt ) { alert( 'x   ' + evt.value ); }); 

рдХреЛрдб "x " рджреЗрдЧрд╛ "x " :
 mk.x = ''; 

рдЗрди рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВред


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


рд╕рдмрд╕реЗ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ


рдирд┐рд░реНрднрд░рддрд╛рдПрдБ ( рдПрдордХреЗ # рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛ рд╡рд┐рдзрд┐ )


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

рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдЧреБрдг f a, b, c, d, e рдХрд╛ рдЧреБрдг рд╣рдореЗрд╢рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╢реБрджреНрдз рдШрдЯрдирд╛рдУрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХреЛрдб рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
 this.on( 'change:a change:b change:c change:d change:e', function() { this.f = this.a + this.b + this.c + this.d + this.e; }); 

рдЕрдм рдЗрд╕ рд╕реЗ рддреБрд▓рдирд╛ рдХрд░реЗрдВ:
 this.addDependence( 'f', 'abcd e', function() { return this.a + this.b + this.c + this.d + this.e; }); 

рдпрд╛ рдЗрд╕рдХреЗ рд╕рд╛рде рднреА:
 this.addDependence( 'f', 'abcd e', function( a, b, c, d, e ) { return a + b + c + d + e; }); 


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ , рд╣рдореЗрдВ рдХрдо рдЗрд╢рд╛рд░реЛрдВ рдХреЛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ( 'change:' рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ 'change:' )
рджреВрд╕рд░реЗ , рд╡рд┐рдзрд┐ рдФрд░ рддрд░реНрдХреЛрдВ рдХреЗ рдирд╛рдо рд╕реЗ, рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдХреА рд╕рдВрдмрдВрдзрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдХреНрдпреЛрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдорд╛рдирд╡ рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реБрдП, рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрддрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ: тАЬ a, b, c, d, e do рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп,тАЭ рдФрд░ рджреВрд╕рд░рд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: тАЬ a, b, c, d, e рдЧреБрдгреЛрдВ рдкрд░ рдЧреБрдг f рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝реЗрдВ "ред рдлрд░реНрдХ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ?
рддреАрд╕рд░рд╛ , рдпрджрд┐ рдХреЛрдИ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рдЬрд┐рд╕ рдкрд░ рдЕрдиреНрдп рд╕рдВрдкрддреНрддрд┐ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдХреЛ silent рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдзрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИред

рд╡рд┐рдХрд▓реНрдк 1, рдШрдЯрдирд╛рдУрдВ рдкрд░:
 this.on( 'change:a change:b', function() { this.p = ( this.a + this.b ) * 2; }); 

рд╡рд┐рдХрд▓реНрдк 2 рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░:
 //  2 this.addDependence( 'p', 'a b', function() { return ( this.a + this.b ) * 2; }); 

рдЕрдм, рдЕрдЧрд░ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ:
 this.set({ a: 2, b: 3 }, { silent: true }); 
... рддреЛ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ p рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛, рджреВрд╕рд░реЗ рдореЗрдВ - рдпрд╣ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдмрджрд▓рддреЗ p рдкрд░ рдПрдХ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ, рдФрд░ p рд╕реЗ рдПрдХ рдЧреБрдг silent рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВрдбрд▓рд░ p рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
 this.on( 'change:p', function() { /* ... */ } ); this.set( 'a', 12, { silent: true }); //   "p"    "" 

рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдпрд╣ рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реНрдерд┐рдд рдбреЗрдЯрд╛ рдкрд░ рд╕рдВрдкрддреНрддрд┐ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ (рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рдЬрд╣рд╛рдВ рдбреЗрдЯрд╛ рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рд╣рд╛рд╡реА рд╣реИ)ред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реИ, рд▓реЗрдХрд┐рди рднрд╛рд╖рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реАрдорд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
 this.addDependence( 'a', [ instance1, 'bc d', instance2, 'ef g', this, 'hij' ], function() { /* ... */ }); 

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

рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рдкрд░, рдЖрдк рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЗрд╡ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рд░реЗрдВрдбреЛрд▓ рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдордзреНрдпрд╕реНрде (рдордзреНрдпрд╕реНрде)


рдПрдордХреЗ рд╡рд┐рдзрд┐ # setMediator


рдЕрдХреНрд╕рд░, рдбреЗрдЯрд╛ рдХреЛ рдорд╛рдиреНрдп рдФрд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдХрд╣реЗрдВ рдХрд┐ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдЬреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреБрдЫ рдирд╣реАрдВред рдЖрдЗрдП рдорд╛рдирдХ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
 // - this.on( 'change:a', function() { if( typeof this.a !== 'string' ) { this.a = String( this.a ); } }); // - 1 this.on( 'change:a', function() { if( typeof this.a === 'string' ) { /* ... */ } }); // - 2 this.on( 'change:a change:b', function() { if( typeof this.a === 'string' ) { /* ... */ } }); //   this.a = 123; 

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

рдордзреНрдпрд╕реНрде (рдпрд╛ рдордзреНрдпрд╕реНрде) рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдЬреБрдбрд╝реЗ рдХрд┐рд╕реА рднреА рдШрдЯрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдкрддреНрддрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╕рдВрдкрддреНрддрд┐ b рд╣рдореЗрд╢рд╛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ (рдпрд╛ NaN ) рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
 this.setMediator( 'a', function( value ) { return String( value ); }); this.setMediator( 'b', function( value ) { return parseInt( value ); }); 

рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ:
 this.setMediator( 'a', String ); this.setMediator( 'b', parseInt ); 

рдордзреНрдпрд╕реНрде рдРрд╕реА рд╕рд░рд▓ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдХреБрдЫ рднреА рдХрд┐рд╕реА рднреА рдЧрдгрдирд╛ рдХреЛ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рддрд╛рдХрд┐ рдЖрд╡реЗрджрди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдиреБрдХрд╕рд╛рди рди рдкрд╣реБрдВрдЪреЗред

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рд╕реЗ рдПрдХ рд▓рд╛рдЗрд╡ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред
 mk.setMediator({ percentageValue: function( v ) { return v > 100 ? 100 : v < 0 ? 0 : v; }, stringValue: String, integerValue: parseInt }); 

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

MK.Array рд╡рд┐рдзрд┐ # setItemMediator


рдПрдХ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдордзреНрдпрд╕реНрде рд╣реИ: рдПрдХ рд╕рд░рдгреА рддрддреНрд╡ рдХрд╛ рдордзреНрдпрд╕реНрдеред рдЬрдм рдЖрдк рдРрд╕рд╛ рдордзреНрдпрд╕реНрде рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реЗ рдЧрдП рддрддреНрд╡ рдХреЛ рдЖрдкрдХреЗ рдЗрдЪреНрдЫрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдмрджрд▓ рджреЗрдЧрд╛ред рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
 var mkArray = new MK.Array( 1, 2, 3, 4, 5 ); mkArray.setItemMediator( function( value ) { return String( value ); }); mkArray.push( 6, 7 ); mkArray.unshift( true, {} ); 

 console.log( mkArray.toJSON() ); // [ "true", "[object Object]", "1", "2", "3", "4", "5", "6", "7" ] 

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

рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдПрдХ рд╕рд░рдгреА рддрддреНрд╡ рдХрд╛ рдордзреНрдпрд╕реНрде рдкреВрд░реА рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЖрдк рдордзреНрдпрд╕реНрде рдХреЛ null рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
 mkArray.setItemMediator( null ); 

рд╡реИрд╕реЗ, рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдЙрдиреНрдирдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рддрдп рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
 mkArray.setItemMediator( String ); 

рдХреВрд▓?

"рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░"


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

1. MK.Array # рдкреЙрдк рдФрд░ MK.Array # рд╢рд┐рдлреНрдЯ рд╣рдЯрд╛рдП рдЧрдП рдЖрдЗрдЯрдо рдХреЛ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "рд╕реНрд╡ред" Starfall : рд▓реЗрдЦ рдкрд░ рдЯрд┐рдкреНрдкрдгреА , winbackgo : рд▓реЗрдЦ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ
2. input[type="text"] рдФрд░ 'keyup' рдЕрдм 'paste' рдИрд╡реЗрдВрдЯ рдХреЛ рд╕реБрдирддреЗ рд╣реИрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ 'keyup' ред safron : рд▓реЗрдЦ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ
3. input[type="checkbox"] рдФрд░ input[type="radio"] рд▓рд┐рдП 'keyup' рдЕрдм 'keyup' рдЗрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕реБрдирддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХреАрдмреЛрд░реНрдб рд╕реЗ рдЗрди рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛ (рдЙрд╕реА рдЯрд┐рдкреНрдкрдгреА) рдХреЛ рдмрд╛рдзреНрдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Balalaika

рдмрд╛рд▓рд╛рд▓рдпреНрдХрд╛


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

Balalaika рдХреЛ Array.prototype рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ Array.prototype , рдЗрд╕рд▓рд┐рдП рд╕рднреА рддрд░реАрдХреЗ рдЬреЛ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП jQuery рд╕рдВрдЧрдд рддрд░реАрдХреЗ ( removeClass , hasClass , hasClass ), рдЗрд╡реЗрдВрдЯреНрд╕ ( on , off ), HTML рдкрд╛рд░реНрд╕рд┐рдВрдЧ ( parseHTML ) рдФрд░ рдЕрдиреНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдмрд╛рд▓рд╛рдХрд▓рд╛ рдХреЛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ $ b рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ :
 $b( 'div' ).forEach( function(){ /* ... */ } ); $b( '.blah-blah', context ).is( 'div' ); $b( 'input[type="text"]' ).on( 'keydown', handler ); 


(рдмрд╛рд▓рд╛рдХрд▓рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ)

banzalik : рдПрдХ рдЗрдЪреНрдЫрд╛ рдХреЗ рд╕рд╛рде рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ
jMas : рдПрдХ рдФрд░ рдЯрд┐рдкреНрдкрдгреА

рдЕрдиреНрдп рдирд╡рд╛рдЪрд╛рд░


рдПрдордХреЗ # рдЪрдпрди рд╡рд┐рдзрд┐


рдкрд╣рд▓реЗ рддрддреНрд╡ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ this рд▓рд┐рдП рдПрдХ рдХреЗ рдЕрдВрджрд░ рдЪрдпрдирдХрд░реНрддрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ (рдХреБрдВрдЬреА "__this__" , рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рджреЗрдЦреЗрдВ)ред рд╡рд┐рдзрд┐ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░рд▓реАрдХреГрдд рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдирд╣реАрдВред
 this.select( '.blah-blah' ); 


рдПрдордХреЗ # рдЪрдпрди рд╡рд┐рдзрд┐


this рдЕрдВрджрд░ рдЪрдпрдирдХрд░реНрддрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред $ (рдбреЙрд▓рд░ рд╕рдВрдХреЗрдд) рд╡рд┐рдзрд┐ рдХреЗ рд╕рдорд╛рди рд╣реИред MK#selectAll рддрд░реАрдХреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ MK#selectAll : рдпрджрд┐ "рдЪрдпрди" рд╡рд┐рдзрд┐ ( MK#select ) рд╣реИ, рддреЛ рдПрдХ "рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ" рд╡рд┐рдзрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
 this.selectAll( '.blah-blah' ); //   ,   this.$( '.blah-blah' ); 


MK.Array # рдкреБрд▓ рд╡рд┐рдзрд┐


рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╕рд╛рде рдЖрдЗрдЯрдо рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред
 var x = this.pull( 3 ); 

рдпрд╣ рд╕реНрдкреНрд▓рд┐рдЯ рдХреЗ рдКрдкрд░ рд╕рд┐рдиреНрд╕реЗрдЯрд┐рдХ рд╢реБрдЧрд░ рд╣реИред
 var x = this.splice( 3, 1 )[ 0 ]; 


рдЧреБрдг .MK , isMKArray рдФрд░ isMKObject рд╣реИ


рдЧреБрдг рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ true рд╣реЛрддреЗ рд╣реИрдВред
 var mkObject = new MK.Object(); alert( mkObject.isMK && mkObject.isMKObject ); // true 


рдлрд┐рдХреНрд╕


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ рдХреАрдбрд╝реЗ рддрдп рдХрд┐рдП рдЧрдП рдереЗред рдпрд╣рд╛рдБ рдлрд┐рдХреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ:


рдирд╛рдорд┐рдд рддрд░реАрдХреЗ рдФрд░ рдЧреБрдг


Semver.org рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП, рдЕрдкреНрд░рдЪрд▓рд┐рдд рддрд░реАрдХреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ 1.0 рд░рд┐рд▓реАрдЬ рддрдХ рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдирдП рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рдЕрдиреБрд░реЛрдз рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред


рд╕реНрдорд╛рд░реНрдЯ рдРрд░реЗ


MK.Array рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ MK.DOMArray рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ MK.Array рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣реА рд╣реИ, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд┐ "рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП" рдЬреАрдЖрдИрдПрдл рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдРрд░реЗ рдореЗрдВ рдмрджрд▓рд╛рд╡ (рдРрдб, рдбрд┐рд▓реАрдЯ, рд╕реЙрд░реНрдЯ ...) рд╣реЛрдиреЗ рдкрд░ MK.DOMArray рдкреНрд▓рдЧрдЗрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ DOM рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред

Matryoshka рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ ред рд╕реНрдорд╛рд░реНрдЯ рд╕рд░рдгреА рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИред

"рд░реЛрдб рдореИрдк"


  • рдмрджрд▓реА Model рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ (рдЬреЛ Backbone рд╕реЗ model рд╕рдорд╛рди рд╣реЛрдЧрд╛)ред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╕рд░рдгреА рддрддреНрд╡ рдХреЗ рдордзреНрдпрд╕реНрде рдкрд░ рд╡рд╛рдХреНрдпрдЧрдд рд╢рд░реНрдХрд░рд╛ рд╣реЛрдЧреАред
  • рдЖрд▓рд╕реА рдЖрд░рдВрднреАрдХрд░рдгред рдЕрдм, рдЬрдм рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ initMK рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрд╖реЗрд░ рдирд╣реАрдВред
  • рдИрд╡реЗрдВрдЯ рдЗрдВрдЬрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВред рд╕рдВрднрд╡рддрдГ, DOM EventTarget рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ EventTarget рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • рдЕрдиреНрдп рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдгреЛрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ) рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП MK#addDependence рдирд┐рд░реНрднрд░рддрд╛ MK#addDependence рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред
  • рдорд┐рдирд┐рдлрд╝рд╛рдпрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВред
  • рд╕рд╛рдЗрдЯ рдкрд░ рд╕рд╣реА рдЧреНрд░рдВрдеред рд╕рд╛рдЗрдЯ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╣реИ, рдФрд░ рдкрд╛рда рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдЖрдк рдЙрд╕ рдкрд╛рда рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж Ctrl + Enter рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╣реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдкреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ)ред рдореИрдВ рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред


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

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ


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

Matryoshka рдХрд╛ рдПрдХ рдФрд░ рд▓рдХреНрд╖реНрдп рд╣реИ рдХрд┐ рдПрдХ "рдбреЗрдЯрд╛ рдЧреЙрдб" рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ 100% рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдореЙрдбрд▓ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдкреЗрдбрд╝ рдкрд░ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдШрдЯрдирд╛ рдХреЗ рдкреЙрдкрдЕрдк рдЗрд╡реЗрдВрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдЕрдзрд┐рдХ рд╣реИ ...

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

рдкреЛрд╕реНрдЯ рдХреЛ рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ (рдпрд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ) рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЕрдЪреНрдЫреЗ рдХреА рд╕рднреА рдХрд┐рд░рдгреЗрдВред

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


All Articles