Underscore: рдЧреИрд░-рд╕рд░рдгреА рдорд╛рдиреЛрдВ рдкрд░ рд╕рд░рдгреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╡рд┐рдзрд┐ рддреНрд░реБрдЯрд┐

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдорд╛рд░реНрдЪ 2016  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jashkenas/underscore

рдЧреИрд░-рд╕рд░рдгреА рдорд╛рдиреЛрдВ рдкрд░ рд╕рд░рдгреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╡рд┐рдзрд┐ рддреНрд░реБрдЯрд┐ рдЬреЛ рдЕрдиреНрдп рд╕рд░рдгреА рд╢реНрд░реЗрдгреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред

_().pop(); // error
_('').pop(); // error
_().first() // undefined

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рд▓рд╛рддрд╛ рд╣реИ, рдХреНрдпрд╛ рд╣рдореЗрдВ рд╕рд░рдгреА-рдкрд╕рдВрдж рдХреЛ рд╕рд░рдгреА рдореЗрдВ рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?

_('hello').first() // 'h'
_('hello').pop() // ?

рд╕рднреА 6 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рд▓рд╛рддрд╛ рд╣реИ, рдХреНрдпрд╛ рд╣рдореЗрдВ рд╕рд░рдгреА-рдкрд╕рдВрдж рдХреЛ рд╕рд░рдгреА рдореЗрдВ рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?

_('hello').first() // 'h'
_('hello').pop() // ?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИ - рд╣рдордиреЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 1.8.3 t0 1.9.0 . рд╕реЗ рдЯрдХрд░рд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ 1.9.1 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреБрд▓рд╛ рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрднреА рднреА 1.10.2 рдореЗрдВ рдореМрдЬреВрдж рд╣реИред

рдореЗрд░реЗ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдареЛрд╕ рд╡рд┐рдкрд░реАрдд, рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ:

Object.assign(undefined, {a: 1})  // error
_().extend({a: 1})  // undefined

Array.prototype.push.call(undefined, 1)  // error
_().push(1)  // error

рдореИрдВ рдХреБрдЫ рд╣рдж рддрдХ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрд╣ рдЕрд╕рдВрдЧрдд рд╣реИред

рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдХрд┐рд╕ рддрд░рд╣ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╡рд╕реНрддреБ рд╕реЗ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рдПред

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

_.chain(something).map(f).push(x)  // hoping to push x to an array

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

_.chain(something).map(f).join('').push(x)  // hoping to push x to a string??

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

function giveMeAMutableArraylike(something) {
    _.chain(something).push(x)
}

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ something рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╕рд░рдгреА рд╣реИ рдЬреЛ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкреВрд░реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ:

  1. giveMeAMutableArraylike $ рдХреЛ рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ null рдпрд╛ undefined рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рдЪреЗрди-рдЗрди-рдж-рдорд┐рдбрд┐рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЙрд╕реА рдирд▓ рдЪреЗрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  2. рдХреЙрд▓рд░ giveMeAMutableArraylike рдХреЛ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рд╡рд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдпрд╛рдиреА рдЕрдиреБрдмрдВрдз рдХреЛ рддреЛрдбрд╝рдирд╛ред рдпрд╣ рджреВрд╕рд░реЗ рдЪреЗрди-рдЗрди-рдж-рдмреАрдЪ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рджреЛрдмрд╛рд░рд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрдирд╛ рдареАрдХ рд╣реИред
  3. something рдПрдХ рдПрдХрд▓ рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирдВрдЧреЗ рдореВрд▓реНрдп рд╣реИ, рдЕрд░реНрдерд╛рдд, $ [v] рдХреЗ рдмрдЬрд╛рдп v #$ ред рдХрдИ JavaScript API рдореЗрдВ рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рд╣реИред рдпрджрд┐ giveMeAMutableArraylike рдХрд╛ рдЕрдиреБрдмрдВрдз рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рддреЛ рддреНрд░реБрдЯрд┐ рдХреЛ рдлреЗрдВрдХрдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИ, рднрд▓реЗ рд╣реА v рдХреБрдЫ рднреА рд╣реЛред

рдмрд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддрд╛ рдХрд┐ giveMeAMutableArraylike рдПрдХрд▓ рдирдВрдЧреЗ рддрддреНрд╡реЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдкрдиреЗ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдмрдВрдз рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП giveMeAMutableArraylike рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИред рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдЬреИрд╕рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдиреБрдмрдВрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛:

| рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ | рдПрдХрд▓-рддрддреНрд╡ рд╕рд░рдгреА рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ
---|---|---
рдЕрдиреБрдмрдВрдз рдирдВрдЧреЗ рдПрдХрд▓ рддрддреНрд╡ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ | _рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ_ | рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдЕрдиреБрдмрдВрдз рдирдВрдЧреЗ рдПрдХрд▓ рддрддреНрд╡ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ | рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ | _рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ_

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

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

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

@jashkenas рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкрд░ рдЕрдкрдирд╛ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ? рдпрджрд┐ рдЖрдк рд╕рд╣рдордд рд╣реИрдВ, рддреЛ рдореИрдВ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рддреИрдпрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рд╢реВрдиреНрдп рдЬрд╛рдВрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

@jgonggrijp - рдХреНрдпрд╛ рдЖрдк рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдпрд╛ рджреЛ рд╡рд╛рдХреНрдпреЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рд╢реВрдиреНрдп рдЬрд╛рдВрдЪ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдРрд╕рд╛ рд╣реИ рдХрд┐ рд╢реВрдиреНрдп рдорд╛рди рдкрд░ рдХреЙрд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕рд░рдгреА рд╡рд┐рдзрд┐рдпрд╛рдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджреЗрдВрдЧреА? рдпрд╛ рдХрд┐ рдЬрдм рд╡реЗ рдПрдХ рд╢реВрдиреНрдп рдореВрд▓реНрдп рдкрд░ рдмреБрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рд╡реЗ рд╢реЛрд░ рдХрд░реЗрдВрдЧреЗ?

@jashkenas рд╣рд╛рдБред рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╕рд░рдгреА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рд╢реИрд▓реА рдХреЗ рдмрд╛рдж, рдореИрдВ рдЬрд┐рд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реВрдВрдЧрд╛ рд╡рд╣ рдиреЛ-рдСрдк рд╣реИ:

https://github.com/jashkenas/underscore/blob/4cf715f593805ba8d7c5685cd06c82b3cd9b55ae/modules/index.js#L495

рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ length рдЪреЗрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмрд╕ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реВрдВрдЧрд╛

if (obj == null) return chainresult(this, obj);

рдЗрди рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ:

https://github.com/jashkenas/underscore/blob/4cf715f593805ba8d7c5685cd06c82b3cd9b55ae/modules/index.js#L1654 -L1655

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

https://github.com/jashkenas/underscore/blob/4cf715f593805ba8d7c5685cd06c82b3cd9b55ae/modules/index.js#L1665

рдореБрдЭреЗ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

markvr picture markvr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ksullivan picture ksullivan  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zackschuster picture zackschuster  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dmaicher picture dmaicher  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jdalton picture jdalton  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ