рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдЬреНрдЬрд╛рдХрд╛рд░

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

рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдореБрдЭреЗ рдХреНрдпрд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ?


Google рдкрд░ рдкрд╣рд▓реЗ рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдкрд╛рдпрдерди рдореЗрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдХрдИ рд▓реЗрдЦреЛрдВ рдореЗрдВ, рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛, рдЙрд╕рдХреЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде рднрд░рдирд╛, рдФрд░ рдЗрди рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдШреЛрд╖рд┐рдд рдХреЙрд▓ рдХрд░рдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИред
рдкрд╣рд▓реЗ рдкреГрд╖реНрда рдкрд░ рдХрдИ рд▓рд┐рдВрдХ рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬреЛ рдореЗрд░реЗ рдЬреИрд╕реЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ,
рдХрдИ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдореЗрд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИрдВред
рдореИрдВ рдЕрдкрдиреА рдмрд╛рдд рд╕реЗ рд╕рдмрд╕реЗ рд╕рд╣реА рдмрддрд╛рдКрдВрдЧрд╛ред

рд╕рд╛рдорд╛рдиреНрдп рд╕рдЬреНрдЬрд╛рдХрд╛рд░


рддреЛ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреНрдпрд╛ рд╣реИ?
рдбреЗрдХреЛрд░реЗрдЯрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдкрд╛рдпрдерди рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
def superfunc(n=2): print("Megclosure created") def clos(func): print("Megclosure used") def clos1(*args, **kwargs): print("Megclosured function",func.__name__) res = func(*args, **kwargs) return (res**n) return clos1 return clos def a(par): return par+9; b = (superfunc())(a) @superfunc(3) def c(txt): return len(txt)+1 print ( b(1),c("abc"*3)) 

рд╣рдо рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИ рдФрд░ рд╕рдЬрд╛рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреИрд╕реЗ рд╣реЛрдЧрд╛


рдЗрд╕рд▓рд┐рдП, рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдкрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░, рд╕рдВрднрд╡рддрдГ, рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░, рдФрд░ рдЕрдирд┐рд░реНрдзрд╛рд░рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдмреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддред
 function decorator(){ ..... } ..... function a(){ ...... } ...... var b=decorator(a, arg1, arg2,....., argN); 
ред


рдореИрдВ рдЕрдкрдиреА рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рджреВрдВрдЧрд╛ред
 function withVars(f, variables) { var args = Array.prototype.slice.call(arguments, 1);//    ,    ,    return function () {//  f  args,    var p = arguments;//   arguments     ... Array.prototype.push.apply(p, args);//...    p f.apply(this, p);//   f   this   p } }; 

рдФрд░ рдЖрд╡реЗрджрди:
 function a(){ var str =""; for(var i=0;i<arguments.length;i++){ str+=arguments[i]+" "; } alert(str); } a(1,2,4,5,"six");//1 2 3 4 5 six var b=withVars(a,4,8,15,16,23,42); b(1,2,4,5,"six");//1 2 3 4 5 six 4 8 15 16 23 42 

рдирддреАрдЬрддрди, рдХреЛрдб рдХреА рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреНрд░рднрд╛рд╡ рдорд┐рд▓рддрд╛ рд╣реИред
рдХрд▓рд╛рдИ рдХреА рдПрдХ рдЭрдЯрдХрд╛ рдХреЗ рд╕рд╛рде, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
 Array.prototype.push.apply(p, args); f.apply(this, p); 

рдкрд░
 Array.prototype.push.apply(args,p); f.apply(this, args); 
ред

рд╕рдВрднрд╡ рдЕрдиреБрдкреНрд░рдпреЛрдЧ





рдХреНрдпрд╛ рдкрдврд╝рдирд╛ рд╣реИ?


JavaScript.ru - рдХреНрд▓реЛрдЬрд░
рддрд░реНрдХ - рдПрдордбреАрдПрди
рдЖрд╡реЗрджрди рдХрд░реЗрдВ - рдПрдордбреАрдПрди

рдзрдиреНрдпрд╡рд╛рдж рдХреЗ рд▓рд┐рдП PS рдзрдиреНрдпрд╡рд╛рдж UFO

UPD1: рдХрдИ рдЙрдкрдпреЛрдЧ рдЬреЛрдбрд╝реЗ рдЧрдПред
UPD2: рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдареАрдХ рдХрд┐рдпрд╛

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


All Articles