JS1k - 1024 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдирд╛



рджреВрд╕рд░реЗ рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рдореИрдВ JS1k рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд░рд╣рд╛ рд╣реВрдВ, рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдереА, рдЕрдм рдореИрдВрдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЖрд╡реЗрджрди рд▓рд┐рдЦреЗ рдФрд░ рднреЗрдЬ рджрд┐рдП рд╣реИрдВред рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: JS1k рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреИрд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдХреЛрдб рдХреЛ 4 рдЧреБрдирд╛ рдХреИрд╕реЗ рдХрдо рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЖрдо рддреМрд░ рдкрд░ 1 Kb рдореЗрдВ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдХреИрд╕реЗ рд░рдЯрдирд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди JS1k " рдУрд░реЗрдЧрди рдЯреНрд░реЗрд▓ " рдХрд╛ рд╡рд┐рд╖рдп Apple II рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕рд┐рдХ рдЧреЗрдо рд╣реИ (рдХрд┐ рдЖрдк рдЗрд╕реЗ Google рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рднрд╛рд╡рдирд╛ рдореЗрдВ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

рд╢реБрд░реБрдЖрдд


рдЖрдкрдХреЛ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЖрд╡реЗрджрди рдпрд╛ рдбреЗрдореЛ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬреЛ рдЖрдкрдХреА рд░рд╛рдп рдореЗрдВ, 1kb (рд╡рд┐рд╡рд░рдг рдФрд░ рдкреНрд░рдмрдВрдзрди рдкрд░ рд╡рд┐рдЪрд╛рд░) рдореЗрдВ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЕрдиреБрдорд╛рдиреЛрдВ рдкрд░ рд╕рдВрджреЗрд╣ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдХреНрдпрд╛ рджреЗрдЦрд╛ рдерд╛ : рд▓реАрдЬреЗрдВрдб рдСрдлрд╝ рдж рдмрд╛рдЙрдВрд╕рд┐рдВрдЧ рдмреАрд╣реЛрд▓реНрдбрд░ , рдЯрд┐рдиреА рд╢рддрд░рдВрдЬ ред рдирд┐рдпрдореЛрдВ рдХреЛ рдкрдврд╝реЗрдВ рдФрд░ HTML рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдлрд┐рд░ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдореЛ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ 100% рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдХрд┐рд╕реА рднреА рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВред рдпрджрд┐ рдпрд╣ 4-5Kb рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ - рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЖрдкрдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрд╕реАрдирд╛ рдЖрдирд╛ рд╣реЛрдЧрд╛ (рдореЗрд░реЗ рдкрд╛рд╕ 4393 рдмрд╛рдЗрдЯреНрд╕ рдереЗ)ред

рдкреНрд░рд╛рдердорд┐рдХ рдХреЛрдб рдкреИрдХреЗрдЬрд┐рдВрдЧ


рдЖрдкрдХрд╛ рдХреЛрдб рд▓реЙрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╕рднреА рдореМрдЬреВрджрд╛ рдкреИрдХрд░реНрд╕ рдореЗрдВ рд╕реЗ, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ - UglifyJS рдЖрдк рдЕрдиреНрдп рд╕рднреА рдХреЛ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк UglifyJS рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИрдВ, рддреЛ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред
рдЕрдкрдирд╛ рдХреЛрдб рдкреИрдХ рдХрд░реЗрдВ рдпрджрд┐ рдпрд╣ 1024 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рднреАрддрд░ рдирд┐рдХрд▓рд╛ - рдЙрддреНрдХреГрд╖реНрдЯ - рдЖрдк рдЖрдЧреЗ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд рдЖрд╡реЗрджрди рднреЗрдЬреЗрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рддреБрд░рдВрдд 1024 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдЖрд╡реЗрджрди рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдпрд╛ рд╡рд┐рд╕реНрддреГрдд рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХрд╛ рд╕рд┐рдХреБрдбрд╝рд╛ рд╣реБрдЖ рдХреЛрдб 2Kb рдХреЗ рднреАрддрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рдареАрдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдРрд╕реА рдЖрдБрдЦреЗрдВ "o_O" рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдЖрд╢реНрд╡рд╕реНрдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ 2 рдмрд╛рд░ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдореЗрд░реЗ рдкрд╛рд╕ рд▓рдЧрднрдЧ 1600 рдмрд╛рдЗрдЯреНрд╕ рдереЗ)ред

рдореИрдиреБрдЕрд▓ рд╕рдВрдкреАрдбрд╝рди рдпрд╛ рдЕрдпреЛрдЧреНрдп рд╕рдВрдкреАрдбрд╝рд┐рдд


рдпрд╣ рднрд╛рдЧ рдЙрди рдХреНрд╖рдгреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЬреЛ UglifyJS рдХреЛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗред рдЕрдм рд╣рд░ рдмрд╛рдЗрдЯ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ!
рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдХреБрдЫ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ UglifyJS рдХреЛрдб рдкреИрдХ рдХрд░реЗрдВ рдФрд░ рдЖрдХрд╛рд░ рджреЗрдЦреЗрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

0. рдорд┐рдиреАрдлрд╛рдпрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рди рдХрд░реЗрдВ - рд╕рднреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ / рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдирд╛рдо рджреЗрдВ! рдПрдХ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдХреЛрдб рд▓рд┐рдЦреЗрдВ, рдорд┐рдирд┐рдлрд╛рдпрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрд╖реНрдардХ рдФрд░ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдореЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред
1. рдпрджрд┐ рдЖрдкрдиреЗ IE рдХреЗ рддрд╣рдд рддреЗрдЬ рдХрд┐рдпрд╛ рд╣реИ - рд╕рднреА рд╣реИрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ - рдпрд╣ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ (ch9 +, o11 +, fx3.6 +, sa5 +)ред
2. рд╕рднреА рд╣реИрдХреНрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ (рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рдВрдХреНрд╢рдВрд╕ рдмрд╛рдЗрдВрдб, рдлреЙрд░рдЪ), рд╣рд╛рдБ рдЕрднреАред
3. рдЖрдкрдХреЛ рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрджреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдг, рдЯрд╛рдЗрдкреЛ рд╣рдЯрд╛рдПрдВред рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд░реЗрдВ (рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЧрдардмрдВрдзрди рдХрд░реЗрдВ) example1 example2 ред
4. DOM рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╕рднреА HTML, рдореИрдиреНрдпреБрдЕрд▓ рдирд┐рд░реНрдорд╛рдг (рд▓рд╛рдЗрдиреЛрдВ) рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ред
5. рд╕рдВрдкрддреНрддрд┐ рд╡рд┐рдзрд┐рдпреЛрдВ (2 рдпрд╛ рдЕрдзрд┐рдХ рдмрд╛рд░) рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдирд╛рдореЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ - рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рдмрд┐рдВрджреБ рдХреЙрд▓ рдХреЛ рдмреНрд░реИрдХреЗрдЯ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВред
// : var canvas, div1, div2; canvas.moveTo(150, 150); canvas.moveTo(153, 151); canvas.moveTo(11, 151); canvas.moveTo(153, 120); canvas.moveTo(153, 1); div1 = '<div style="width:150px;height:200px;color:red"></div>'; div2 = '<div style="width:150px;height:200px;color:blue"></div>'; // : var canvas, div1, div2, __moveTo__ = 'moveTo'; __width_height__ = 'width:150px;height:200px;'; canvas[__moveTo__](150, 150); canvas[__moveTo__](153, 151); canvas[__moveTo__](11, 151); canvas[__moveTo__](153, 120); canvas[__moveTo__](153, 1); div1 = '<div style="' + __width_height__ + 'color:red"></div>'; div2 = '<div style="' + __width_height__ + 'color:blue"></div>'; 

рдПрдХ рд╕реВрддреНрд░ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдирд╛ рдХреЛрдб рдХрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛
рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП: (N * (L+1)) - (N * (2 + V) + V + 4 + L)
рдПрд▓ рдмрд┐рдВрджреБ рдХреЗ рдмрд┐рдирд╛ рд╡рд┐рдзрд┐ рдХреА рд▓рдВрдмрд╛рдИ рд╣реИ
рдПрди - рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛
V рдорд┐рдиреАрдлрд╝рд╛рдпрд░ рдХреЗ рд╕рд╛рде рдХрдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЪрд░ рдХреА рд▓рдВрдмрд╛рдИ рд╣реИ (рдЖрдорддреМрд░ рдкрд░ 1)
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ 9 рдмрд╛рдЗрдЯреНрд╕ рдорд┐рд▓рддреЗ рд╣реИрдВ

рддрд╛рд░ рдХреЗ рд▓рд┐рдП (рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ): N * L - (N * (4 + V) + V + 4 + L)
рдПрд▓ - рд▓рд╛рдЗрди рдХреА рд▓рдВрдмрд╛рдИ
рдПрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ
V рдорд┐рдиреАрдлрд╝рд╛рдпрд░ рдХреЗ рд╕рд╛рде рдХрдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЪрд░ рдХреА рд▓рдВрдмрд╛рдИ рд╣реИ (рдЖрдорддреМрд░ рдкрд░ 1)
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ 13 рдмрд╛рдЗрдЯреНрд╕ рдорд┐рд▓рддреЗ рд╣реИрдВ

6. рдЪрд░ рдЪрд░ var __document__ = document; рдореЗрдВ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ var __document__ = document; рдХреЛ рдмрд╛рд╣рд░ var __document__ = document;
7. рдЕрдЧрд░ рдЖрдкрдХреЛ рдЬрд░реВрд░рдд рд╣реЛ рддреЛ рджреЗрдЦреЗрдВ
8. рдЕрдкрдиреЗ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдХреЗрд╡рд▓ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
9. рдЫреЛрд░реЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ рдЬрдмрдХрд┐ habrahabr.ru/blogs/javascript/115369/#comment_3737137 , c = smth.length рдХрд╛рдЙрдВрдЯрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╢рди рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ c = smth.length
 // : for (i = 0;i<smth.length; i++)do(i); // : i=smth.length;while(i--)do(i); 

рдПрдХ рдФрд░ рдорд╛рдЗрдирд╕ 6 * рдПрди рдмрд╛рдЗрдЯреНрд╕
10. рдпрджрд┐ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ var blabla= function (){}; рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ var blabla= function (){}; рдЙрдиреНрд╣реЗрдВ рдлрдВрдХреНрд╢рди рдбреЗрдлрд┐рдиреЗрд╢рди рдлрдВрдХреНрд╢рди рдмреНрд▓рд╛рдмреНрд▓рд╛ function blabla(){} рдПрдХ рдФрд░ рдорд╛рдЗрдирд╕ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдмрджрд▓реЗрдВред
11. getElementById, getElementsByTagName рдмрдЬрд╛рдп getElementById, getElementsByTagName querySelector, querySelectorAll рдЙрдкрдпреЛрдЧ querySelector, querySelectorAll
12. Math.round (num) рдХреЗ рдмрдЬрд╛рдп ~~ num рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
13. рдЕрдкрдиреЗ HTML рдХреЛрдб <div id="aaa"> - <div a=aaa> рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рджреЛрд╣рд░реЗ рдФрд░ рдПрдХрд▓ рдЙрджреНрдзрд░рдг рдирд┐рдХрд╛рд▓реЗрдВ
14. рддрддреНрд╡реЛрдВ рдХреА рдЖрдИрдбреА рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ <div id=aaa> - <div a=1>
15. рд░рдВрдЧреЛрдВ рдХреЛ 3-4 рд╡рд░реНрдгреЛрдВ рддрдХ рдХрдо рдХрд░реЗрдВред рд╕рдЯреАрдХ рд░рдВрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рдЖрдк рд╣рдореЗрд╢рд╛ рдЙрдиреНрд╣реЗрдВ рдзрд╛рд░рдгрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред '#ff0000' -> 'red', '#fedc52' -> '#fd5'
16. js1k рд╣рдореЗрдВ рдореБрдлреНрдд рдореЗрдВ 3 рд╡реИрд░рд┐рдПрдмрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдмрдВрдж рдХреНрд░рдо рдореЗрдВ a, b, c
 var b = document.body; var c = document.getElementsByTagName('canvas')[0]; var a = c.getContext('2d'); (function (ctx, __document__body__, canvas) { //   }(a,b,c)) 
рдСрд░реНрдбрд░рдХрд░реНрддрд╛ рдЗрд╕ рд░реВрдк рдореЗрдВ рдЖрдкрдХреЗ рдХреЛрдб рдХрд╛ рд░реАрдореЗрдХ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ a, b, c рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
 (function(a,b,c){ //   }(a,b,c)) 
рдФрд░ рдЖрдкрдХреЛ рдмрд╛рд╣рд░реА рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдВрддрд░рд┐рдХ рдЪрд░ рдХреЗ рдирд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдФрд░ рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рдмрдВрдж рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред 26 рдмрд╛рдЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдЗрдирд╕!
17. рдПрдХ рдЫреЛрдЯреА рддреБрд▓рдирд╛ e.keyCode^27||e.preventDefault() рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред e.keyCode^27||e.preventDefault() рдмрдЬрд╛рдп e.keyCode==27&&e.preventDefault()
18. рдпрджрд┐ рдЖрдкрдХрд╛ рдХреЛрдб 1024 рд╕реЗ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЧреИрд░-рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмреНрд▓реЙрдХ (рд╡рд┐рд╡рд░рдг) рдХреЛ рд╣рдЯрд╛рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред
19. рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдбреЗрдореЛ рдпрд╛ рдЧреЗрдо рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╡рд░рдг рдХреЛ рдкрдврд╝реЗ рдмрд┐рдирд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред
20. рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдЗрд╡реЗрдВрдЯ рдмрд╛рдЗрдВрдб рдХреЗ рд▓рд┐рдП HTML рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╛ рдПрдХ рдЕрд╡рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ, рдСрдирдХреАрдкреНрд░реЗрд╕ рдХреЗ рдмрдЬрд╛рдп рдЫреЛрдЯреА рдИрд╡реЗрдВрдЯ рдирд╛рдо onkeyup рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдкрд╣рд▓реА рдЬрдЧрд╣ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛)

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рд╕реБрдЭрд╛рд╡

1. рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╣ рдЕрдХреНрд╖рд░ рдЯреИрдЧ рд╣реИ рдПрдХ, рдмреА, рдореИрдВ, рдкреА, рдХреНрдпреВ, рдПрд╕, рдпреВ (рд▓реЗрдХрд┐рди рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдмрдирд╛ рдирд╣реАрдВ рд╣реИ - рдУрдкреЗрд░рд╛ рдХрд╕реНрдЯрдо рдЯреИрдЧ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ)
2. рдЕрдиреНрдп рдкреИрдХрд░реНрд╕ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рд╢рд╛рдпрдж Uglifay рдЖрдкрдХреЛ рдХрдВрдкреНрд░реЗрд╕рд░ rater.thruhere.net рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ

рдореИрдиреНрдпреБрдЕрд▓ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдХреНрдпрд╛ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг


рдЗрд╕ рд╕рд╛рд▓ рдореИрдВрдиреЗ рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдмрдЪрдд рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд┐рдкрдЪрд┐рдкрд╛ рдиреЛрдЯреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣рд╛рдБ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдорд┐рд▓рд╛ рдХреЛрдб рд╣реИ:
 // Full version of Notes ll be on my web site soon. // Creating closure to compile with UglifyJS // (!) After compile remove global closure manually (function (ctx, __document__body__, canvas) { // Dictionary for some frequently used method names and strings var __fillStyle__ = 'fillStyle', __dblclick__ = 'dblclick', __setAttribute__ = 'setAttribute', __background_and_left__ = 'position:absolute;left:', __fillRect__ = 'fillRect', __addColorStop__ = 'addColorStop', __innerHTML__ = 'innerHTML', __textarea__ = 'textarea', __ffe__ = '#ffe', // Other shorthands __document__ = document, __localStorage__ = localStorage, i,j,c,imageData, width = 200, height = 250, paperGradient = ctx.createLinearGradient(width, height/2, width, 0); // Making fixed canvas size canvas[__setAttribute__]('width', 202); canvas[__setAttribute__]('height', 275); // Creates note at e.clientX e.clientY function createPaper(e) { // Opera haven't onbeforeuload event // I must save document.body content on each keyup and each keyCode=27 keydown // Sorry... :3 // (!) replace b and save to actual after min __document__body__[__innerHTML__] += '<a onkeydown=event.keyCode^27||b.removeChild(this),w() style=' + __background_and_left__ + e.clientX + 'px;top:' + e.clientY + 'px;><i style=' + __background_and_left__ + '30px;top:10px;color:#a53;font-size:9px>'+Date()+'</i><img src=' + imageData + '><' + __textarea__ + ' onkeyup=this.'+__innerHTML__+'=this.value,w() style=' + __background_and_left__ + '28px;top:33px;background:transparent;width:170px;height:200px;border:0;line-height:20px;overflow:hidden>Esc</' + __textarea__ + '></a>'; save(); } // Saves document.body to localStorage function save() { __localStorage__[__dblclick__] = __document__body__[__innerHTML__]; } // Making sexy paper // Gradient paperGradient[__addColorStop__](0, '#ff9'); paperGradient[__addColorStop__](1, __ffe__); ctx[__fillStyle__] = paperGradient; ctx.strokeStyle = '#aa7'; // Draw paper body ctx.strokeRect(1,1, width,height); ctx[__fillRect__](1,1, width,height); // Creating paper texture i = width; ctx[__fillStyle__] = __ffe__; while(--i) { while(--j) { Math.random()>.7&&ctx[__fillRect__](i,j,1,1); } j = height; } // 2 Vertical red lines ctx[__fillStyle__] = '#a51'; ctx[__fillRect__](20, 1, 1, height); ctx[__fillRect__](22, 1, 1, height); // Some horizontal gray lines ctx[__fillStyle__] = '#aaa'; for (i = 50; i < height; i += 20) ctx[__fillRect__](0, i, width, 1); // Grabbing image source imageData = canvas.toDataURL(); // Print "Hello message" or load localStorage content __document__body__[__innerHTML__]=__localStorage__[__dblclick__] || __dblclick__+', uses ' + __localStorage__; // Some action events __document__.addEventListener(__dblclick__, createPaper, 0); }(a,b,c)) // Vars must be in a, b, c order 

рдпрд╣ рдХреЛрдб рдпреВрд▓рд┐рдлреЗрд░ рджреНрд╡рд╛рд░рд╛ 1048 рдмрд╛рдЗрдЯреНрд╕ рддрдХ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рд╡реИрд╢реНрд╡рд┐рдХ рдмрдВрдж рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ 1022 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдШрдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреБрдХреВрд▓рди рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ рдХреБрдЫ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдХрдо рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдореЗрд░реЗ рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ


рдореВрд▓ рд╡рд╣ рд╣реИ рдЬреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдерд╛ (рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рд╕реЗ рдиреЛрдЯ рдмрдирддрд╛ рд╣реИ, Esc рдиреЛрдЯ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдбреЗрдЯрд╛ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ) JS - 4393 рдмрд╛рдЗрдЯреНрд╕: azproduction.ru/labs/1kjs-ios-javascript-notes/index.original.html
JS1k рдкрд░ рдбреЗрдореЛ (рдореВрд▓ рдХреЗ рд╕рдорд╛рди рдирд┐рдпрдВрддреНрд░рдг) JS - 1022 рдмрд╛рдЗрдЯреНрд╕: js.gd/1hn (рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг)

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

рдпреБрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИ


-1ред рдмрд╛рдЗрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдлрдПрдл 3.6 рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдмрд╛рдВрдзрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рдзрд┐ рдЕрднреА рддрдХ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ ред
 //   c.lineTo(150,150);c.lineTo(150,200);c.lineTo(150,250);c.lineTo(250,350);c.lineTo(450,350); //    var a='lineTo';c[a](150,150);c[a](150,200);c[a](150,250);c[a](250,350);c[a](450,350); //    var a=z.lineTo.bind(z);a(150,150);a(150,200);a(150,250);a(250,350);a(450,350); 

рдпрджрд┐ рдЖрдк рднрд╛рдЧ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдЦрд┐рд░реА рд╕рдордп рдкрд░ рд╕рдм рдХреБрдЫ рдмрдВрдж рди рдХрд░реЗрдВ - рдбреЗрдореЛ рдХреЗ рд╕рд╛рде рдЖрдПрдВ, рдХреЛрдб рдХреЛ рдХрдо рдХрд░реЗрдВред рдбреЗрдбрд▓рд╛рдЗрди JS1k рдЕрднреА рднреА рдмрд╣реБрдд рджреВрд░ рд╣реИ - 24 рдЕрдкреНрд░реИрд▓, 2011ред рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!

рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд▓реЛрдЪрдирд╛, рд╕реБрдЭрд╛рд╡, рд╕реБрдЭрд╛рд╡ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

UPD рдиреЗ рд░реАрдбрд░ рдЯрд┐рдкреНрд╕ рдФрд░ рдЕрдкрдиреА рдЬреЛрдбрд╝реА рдмрдирд╛рдИ ред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдиреНрдп рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЖрдХрд╛рд░ 1022 рд╕реЗ рдШрдЯрд╛рдХрд░ 975 рдмрд╛рдЗрдЯреНрд╕ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдПрдХ рджреВрд░рд╕реНрде рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реАред

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


All Articles