ΠΡΠΈΠ±ΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΡ ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ, ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ².
_().pop(); // error
_('').pop(); // error
_().first() // undefined
ΠΡΠΎ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ: Π΄ΠΎΠ»ΠΆΠ½Ρ Π»ΠΈ ΠΌΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΊ ΠΌΠ°ΡΡΠΈΠ²Ρ?
_('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
ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ, ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΎΠΏΡΠ°Π²Π΄Π°ΡΡΡΡ ΠΏΠΎ ΡΠ΅Π»ΠΎΠΌΡ ΡΡΠ΄Ρ ΠΏΡΠΈΡΠΈΠ½:
giveMeAMutableArraylike
#$ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΡΠ°Π²Π½ΡΠ»ΠΈ Ρ null
ΠΈΠ»ΠΈ undefined
. ΠΡΠΎ ΡΡΠ°Π²Π½ΠΈΠΌΠΎ Ρ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΏΠΎΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ Π½ΡΠ»Ρ.giveMeAMutableArraylike
ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ, ΡΠ΅Π³ΠΎ ΠΎΠ½ ΡΠ²Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ, Ρ. Π΅. Π½Π°ΡΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ. ΠΡΠΎ ΡΡΠ°Π²Π½ΠΈΠΌΠΎ ΡΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΎΠΉ ΠΏΠΎΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅. ΠΠΏΡΡΡ ΠΆΠ΅, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ.something
β ΡΡΠΎ Π³ΠΎΠ»ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Ρ ΠΎΠ΄Π½ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ, Ρ. Π΅ v
Π²ΠΌΠ΅ΡΡΠΎ [v]
. ΠΡΠΎ ΠΎΠ±ΡΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
API JavaScript. ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ giveMeAMutableArraylike
Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΡΠΎ, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π²ΡΠ΄Π°Π²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ v
.Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Underscore Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΡ, ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π»ΠΈ giveMeAMutableArraylike
ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠ΅ Π³ΠΎΠ»ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ»ΠΈ Π½Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ giveMeAMutableArraylike
Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ. ΠΠ΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ, ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π²ΡΠΎΠ΄Π΅ Underscore ΠΌΠΎΠ³Π»Π° Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ²:
| Π’Π΅ΠΊΡΡΠ΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ | ΠΠ±Π΅ΡΠ½ΡΡΡ ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ
---|---|---
ΠΠΎΠ½ΡΡΠ°ΠΊΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π³ΠΎΠ»ΡΠΉ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ | _ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΌΠ΅ΡΠ°ΡΡΡΡ_ | ΠΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
ΠΠΎΠ½ΡΡΠ°ΠΊΡ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ³ΠΎΠ»ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ | ΠΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ Π²ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ | _ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΌΠ΅ΡΠ°ΡΡΡΡ_
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΠ΅ΡΠ°Π΅ΡΠ΅, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ ΠΎΠ±Π΅ΡΠ½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅? ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ ΠΌΠΎΠ³ΡΡ Π·Π°Ρ
ΠΎΡΠ΅ΡΡ ΠΎΠ±Π΅ΡΠ½ΡΡΡ Π²ΡΠ΅, ΡΡΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Array
, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠΎΠ³ΡΡ Π·Π°Ρ
ΠΎΡΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ arguments
ΠΈ ΠΏΡΠΎΡΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ°ΠΊ Π΅ΡΡΡ. ΠΠΏΡΡΡ ΠΆΠ΅, ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠ°ΠΊ Underscore, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ³Π°Π΄Π°ΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΊΠ·ΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠΈ, ΠΈ ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΈΡ
Π² Array
. ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ
Π²Π°ΡΠΈΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ. ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅Ρ ΡΠ±Π΅Π΄ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΏΠΎΠ»ΡΠ·Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ² Π·Π° ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»ΠΈΡΡ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ Π²Π΅ΡΠΊΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΠΏΠΎΠ»ΡΠ·Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠΎΡΡΠΎΠΌΡ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡΠ΄Π΅Ρ Π²ΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠ»Π΅Π²ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΡ Π²ΡΠ΅ ΠΊΠ°ΠΊ Π΅ΡΡΡ. ΠΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Underscore, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΎΠΏΡΠ°Π²Π΄Π°Π½Π½ΡΠΌ Π²ΠΎ Π²ΡΠ΅Ρ
ΠΌΡΡΠ»ΠΈΠΌΡΡ
ΡΠΈΡΡΠ°ΡΠΈΡΡ
, ΠΈ ΠΎΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ³Π»Π°ΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ _.extend
. ΠΡΠ»Π΅Π²Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΈΡΠ°ΡΡΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ Π±ΡΡΡΡΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡ Π΅Π΅ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.
@jashkenas , Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΏΡΠΎΠ»ΠΈΡΡ ΡΠ²Π΅Ρ Π½Π° ΡΡΠΎ? ΠΡΠ»ΠΈ Π²Ρ ΡΠΎΠ³Π»Π°ΡΠ½Ρ, Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Ρ ΠΏΡΠ»Π»-ΡΠ΅ΠΊΠ²Π΅ΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π½Π° Π½ΡΠ»Ρ.
@jgonggrijp β ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ-Π΄Π²ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½ΡΠ»Ρ?
ΠΡΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Π±ΡΠ΄ΡΡ ΡΠ²Π½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ? ΠΠ»ΠΈ ΡΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ noop ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ?
@jashkenas ΠΠ°. ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ Π±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π», ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠΌ, ΡΠ»Π΅Π΄ΡΡ ΡΡΠΈΠ»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ:
ΠΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° length
Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΡΠΎΡΡΠΎ Π²ΡΡΠ°Π²Π»Ρ
if (obj == null) return chainresult(this, obj);
ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ Π΄Π²ΡΠΌΡ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ:
ΠΠ»ΡΡ ΡΠ΅ΡΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΈ Π΅ΡΠ»ΠΈ ΡΡΠΈ ΡΠ΅ΡΡΡ Π²ΡΡΠ²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΅ΡΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° null, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ Π² no-op ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ:
ΠΠ²ΡΡΠΈΡ Ρ ΠΎΡΠΎΡΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ!
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΠΎ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ: Π΄ΠΎΠ»ΠΆΠ½Ρ Π»ΠΈ ΠΌΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΊ ΠΌΠ°ΡΡΠΈΠ²Ρ?