Π·Π° ΡΡΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ call javascript
Π€ΠΎΡΡΠΌ
Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΠΏΡΠΈΠΌΠ΅ΡΡ
ΠΠ΅ΡΠΎΠ΄ call ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ(this) ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π±ΡΠ΄Π΅Ρ Π²Π·ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ.
ΠΠΎΠΌΠΈΠΌΠΎ ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π²ΡΠ·ΠΎΠ²Π°, ΠΌΠ΅ΡΠΎΠ΄ call ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ:
ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΡΠ·ΠΎΠ²Π° Π½Π΅ ΡΠΊΠ°Π·Π°Π½, ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° window:
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π Π² ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ apply ΠΈ call (ΠΊΡΠΎΠΌΠ΅ ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄ΠΎΠΏ. Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²)? ΠΠ°ΠΊ-ΡΠΎ Π½Π΅ Π²Π΅ΡΠΈΡΡΡ, ΡΡΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈ Π΄Π²Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅.
Π Π² ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ apply ΠΈ call (ΠΊΡΠΎΠΌΠ΅ ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄ΠΎΠΏ. Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²)? ΠΠ°ΠΊ-ΡΠΎ Π½Π΅ Π²Π΅ΡΠΈΡΡΡ, ΡΡΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈ Π΄Π²Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅.
// ΠΡΠΎΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΠ°Ρ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΡΠΈΠ»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
function changeColor( color ) <
this.style.color = color;
>
// ΠΠ΅ Π²ΡΠ·ΠΎΠ² Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° window, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠΈΠΉΡΡ Π½Π΅ΡΠ΄Π°ΡΠ΅ΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Π½Π΅ΠΌ
// Π½Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° style
changeColor( «white» );
// ΠΠΎΠΈΡΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ID ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°Π²Π΅Π½ main
var main = document.getElementById(«main»);
// Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π΄Π»Ρ Π½Π΅Π³ΠΎ ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄ call
// ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π²ΡΠ΅
// ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ
changeColor.call( main, «black» );
// Π€ΡΠ½ΠΊΡΠΈΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΠ°Ρ ΡΠ²Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° body
function setBodyColor() <
// ΠΠ΅ΡΠΎΠ΄ apply ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ body, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π²
// ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²
// Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ
ΡΡΠ½ΠΊΡΠΈΠΈ
changeColor.apply( document.body, arguments );
>
// Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° body ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°
setBodyColor( «black» );
Π― Π½ΠΎΠ²ΠΈΡΠΎΠΊ Π² Java ΡΠΊΡΠΈΠΏΡ, ΠΏΡΠΎΡΡ Π²Π°ΡΠ΅ΠΉ ΠΏΠΎΠΌΠΎΡΠΈ.
ΠΡΠ°ΠΊ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
ΠΡΠΎΠ±ΠΎΠ²Π°Π» ΠΈ ΡΠ°ΠΊ. ΠΡΠ»Π΅Π²ΠΎΠΉ ΡΡΡΠ΅ΠΊΡ.
ΠΠ½ΡΡΡΠΈ setInterval this ΡΠΆΠ΅ Π½Π΅ ΡΠΎΡ, ΡΡΠΎ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π² ΡΠ΅Π»Π΅ Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, self) ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² Π½Π΅Π΅ this. ΠΠ½ΡΡΡΠΈ ΠΆΠ΅ setInterval ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΡΠΆΠ΅ Π½Π΅ ΠΊ this, Π° ΠΊ Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, self).
Π ΡΠ»ΡΡΠ°Π΅ call Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Π½Ρ, Π² ΡΠ»ΡΡΠ°Π΅ apply ΠΌΠΎΠΆΠ½ΠΎ Π»ΡΠ±ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ arguments, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ½Π΅ ΠΊΠ°ΠΊ-ΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
function.call(obj, arg) = obj.function(arg)
ΠΠ»Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ°ΠΌΡΠΌ ΠΏΡΠΎΡΡΡΠΌ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ call.
JavaScript β ΠΌΠ΅ΡΠΎΠ΄Ρ call ΠΈ apply
JavaScript β ΠΎΡΠ΅Π½Ρ ΠΊΡΠ°ΡΠΈΠ²ΡΠΉ ΠΈ ΠΈΠ·ΡΡΠ½ΡΠΉ ΡΠ·ΡΠΊ. Π Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Ρ ΠΎΡΠΎΡΠΎ Π²Π»Π°Π΄Π΅ΡΡ ΠΈΠΌ ΠΌΠ°Π»ΠΎ ΠΏΡΠΎΡΡΠΎ Π·Π½Π°ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, Π½Π°Π΄ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ½ΠΊΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Π΄Π²ΠΈΠΆΠΊΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊΡΠ°ΡΠΈΠ²ΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
Π ΡΠ°ΠΊ, ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ»ΠΎΠ², Π±ΠΎΠ»ΡΡΠ΅ Π΄Π΅Π»Π°, ΠΏΠΎΠ΅Ρ Π°Π»ΠΈ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² call() ΠΈ apply() ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π°ΠΉΡΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°.
Π£ Π½Π°Ρ Π΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ΅ΡΠ²ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π² Π³ΠΎΠ»ΠΎΠ²Ρ β ΡΠΈΠΊΠ», ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ² ΠΎΡ ΠΈ Π΄ΠΎ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠΎ Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΠ°ΡΠΈΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ:
var smallest = function ( array ) <
return Math.min.apply( Math, array );
>
var largest = function ( array ) <
return Math.max.apply( Math, array );
>
smallest( a ); // ΠΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ 0
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π² JavaScript ΡΡΠ½ΠΊΡΠΈΠΈ Math.min() ΠΈ Math.max(). ΠΡΠ·ΡΠ²Π°Π΅ΠΌ Math.min() ΡΠ΅ΡΠ΅Π· apply(), ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Π½Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡ (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²).
ΠΠ»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π² JavaScript ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π° call() ΠΈ apply(). ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π°. ΠΠ½ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ, Π½ΠΎ Π΅ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ. ΠΡΡΠ°ΡΠΈ, ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Ρ ΡΠΎ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΡΠ»Π°Π΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ this Π² ΡΡΠ½ΠΊΡΠΈΠΈ, Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ Π²ΡΠ·Π²Π°Π½.
console.log( this ); // ΠΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ «Window»
>
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ:
var context = function () <
console.log( this ); // ΠΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π½Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡ «Object < prop=1 >»
>
ΠΠ΅ΡΠΎΠ΄ call Π΄Π΅Π»Π°Π΅Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΡΠ»ΠΈΡΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π°Π·Π½ΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°Π² ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
add( 1, 2 ); // ΠΠ±ΡΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ²
ΠΠ°Π³Π»ΡΠ΄Π½Π°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ call ΠΈ apply.
ΠΠΎ ΡΠΈΡΡΠ½ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊΠΎΠΌΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ.
Π ΡΠ°ΠΊ, ΠΌΡ ΡΠΌΠΎΠ³Π»ΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ ΡΡΠΈΡ Π΄Π²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΡΠΉ ΠΏΡΠΈΠ΅ΠΌ Π² JavaScript ΠΈ ΡΠΈΡΠΎΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ.
ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ FireBug.
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΏΡΠΈΠ΅ΠΌΡ ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΎΡΠ΅Π½Ρ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΠΆΠΎΠ½Π° Π Π΅Π·ΠΈΠ³Π° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Secrets of the JavaScript Ninja.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ apply(), call() ΠΈ bind(), Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ JavaScript ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ
Jan 13, 2019 Β· 13 min read
π ΠΠΎΠΉ Π’Π²ΠΈΡΡΠ΅Ρ β ΡΠ°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ· ΠΌΠΈΡΠ° ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π°, Π΄Π° ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌπ. ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ, Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ: ) βοΈ
Bind() ΠΆΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ this Π² ΠΌΠ΅ΡΠΎΠ΄Π°Ρ ΠΈ Π΄Π»Ρ ΠΊΠ°ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠ΅ΡΠΎΠ΄ bind()
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΌ, Π½ΠΎ Π·Π°ΡΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ this Π² ΠΌΠ΅ΡΠΎΠ΄Π°Ρ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΎ ΡΠ²Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ this ΡΠ°ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ±ΡΡΠ½ΠΎ Π½Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ bind() ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ this ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΌ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ»ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΈΠ½ΠΎΠ³Π΄Π° this Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΡΠΎ ΡΠ°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ Π²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ Π² ΡΠ°Π±ΠΎΡΠ΅ ΠΊΠΎΠ΄Π°. Π’Π°ΠΊ, ΡΠ΅ΠΉΡΠ°Ρ Π±Π΅Π· ΠΏΠ°Π½ΠΈΠΊΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅ ΠΏΠΎΠ½ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΡ ΡΠΊΠΎΡΠΎ ΡΡΠ°Π½Π΅Ρ ΠΊΡΠΈΡΡΠ°Π»ΡΠ½ΠΎ ΡΡΠ½ΡΠΌ. ΠΠ° ΡΡΠΈΠΌ Π²Ρ ΠΈ ΡΠΈΡΠ°Π΅ΡΠ΅ ΡΡΡ ΡΡΠ°ΡΡΡ.
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ½ΡΡΡ ΡΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ this Π² JavaScript. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΈΡΠ΅ ΡΡΠ°ΡΡΡ β ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ this Π² JavaScript. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ, ΡΠΎ Π²Ρ Π²ΡΡΡΠ΅ΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΠΉ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π½ΠΈΠΆΠ΅. Π’Π°ΠΊ ΡΡΠΎ, Π»ΡΡΡΠ΅ Π½Π΅ Π»Π΅Π½ΠΈΡΠ΅ΡΡ ΠΈ ΠΏΡΠΎΡΡΠΈΡΠ΅ Π΅Ρ, ΠΏΠΎΡΡΠ°ΡΡΡΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΎΠ½ΠΎ Π²Π°ΠΌ ΠΎΠΊΡΠΏΠΈΡΡΡ. Π ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π΅ΡΡ Π»ΡΡΡΠ΅, Π±ΠΎΠ½ΡΡΠΎΠΌ ΠΏΡΠΎΡΡΠΈΡΠ΅ Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ Ρ βΠΏΠΎΠ΄Π½ΡΡΠΈΠ΅ΠΌβ (hoisting) Π² JavaScript
Bind() ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²ΡΡΡΠ°Π²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ this Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄Π°
ΠΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Π½ΠΈΠΆΠ΅, ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΡΠ°Π½Π΄ΠΎΠΌΠ½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.
ΠΡΠ°ΠΊ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΊΠ»ΠΈΠΊΠ°Π΅ΡΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ, Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ clickHandler() ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ HTML ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ β ΠΊΠ½ΠΎΠΏΠΊΠ΅, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΎΠ½ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄.
ΠΠΎΠΎΠ±ΡΠ΅, ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π° Π² JavaScript ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Backbone.js, Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΡΠΈΠΏΠ° jQuery Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ Π·Π° Π½Π°Ρ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ this Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΠΌ Π² Π½Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ bind() :
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ:
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ bind() ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ
Π JavaScript ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΡΠ΄Π° ΡΠ³ΠΎΠ΄Π½ΠΎ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈΡ , Π° Π΅ΡΡ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈ Π²ΡΡ ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅. Π Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° bind() ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎ Π½Ρ ΡΡΠΏΠ΅Ρ ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈ Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ bind() ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠ°ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
ΠΠ°ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΡΠΆΠ΅ ΡΠ°ΡΡΠΈΡΠ½ΠΎ Π²ΡΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Ρ ΡΠ°Π½ΡΡΠΈΠΌΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. Π ΠΎΠ±ΡΠ΅ΠΌ, ΡΡΠΎ Π·Π²ΡΡΠΈΡ ΠΊΡΠ΄Π° ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ Π΅ΡΡΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅.
ΠΠ΅ΡΠΎΠ΄Ρ Apply ΠΈ Call
ΠΠ²Π° ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΡΡΡ Π»ΠΈ Π½Π΅ ΡΠ°ΠΌΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² JavaScript ΠΈ ΡΡΠΎ Π½Π΅ΡΠΏΡΠΎΡΡΠ°: Ρ ΠΈΡ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π²ΡΡΡΠ°Π²Π»ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ this Π² Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΡΠ½ΠΊΡΠΈΡ apply() Π² Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΊΠ°ΠΊ-Π±ΡΠ΄ΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎ, ΠΏΡΠΈ Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ β ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ; ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅ΡΡΡ Π²Π°ΡΡΠΈΡΡΡΡΠ΅Π΅ΡΡ ΡΠΈΡΠ»ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π° Π½Π΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Π΅ΡΡΡ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΡΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ this Ρ ΠΏΠΎΠΌΠΎΡΡΡ Apply ΠΈΠ»ΠΈ Call
ΠΠΎΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΡΠΉ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ , ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΠΎΠΊΡΠ½ΡΠΌΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Apply ΠΈ Call:
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ call() ΠΈ apply(), ΡΡΠΎΠ±Ρ Π²ΡΡΡΠ°Π²Π»ΡΡΡ this Π² Callback ΡΡΠ½ΠΊΡΠΈΡΡ
Π‘Π°ΠΌΠ° ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΡ ΠΎΡΠ΅Π½Ρ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ:
ΠΠ°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Apply ΠΈ Call (ΠΠ°ΠΆΠ½ΠΎ Π·Π½Π°ΡΡ)
ΠΠ°ΠΈΠΌΡΡΠ²ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΌΠ°ΡΡΠΈΠ²Π°
Π£ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°, Π½ΠΎ ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π΅Ρ ΡΡΠΎΠ»ΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠΎ-Π΄Π΅ΡΠΎΠ»ΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ² (Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΈΠ½ΠΎΠ³Π΄Π° Π³ΠΎΠ²ΠΎΡΡΡ β ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°), ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΌΠ΅Π»ΠΎ ΠΈΡ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΡΡΠΈΡ ΡΠ°ΠΌΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ .
ΠΠ°ΡΡΠΈΠ²ΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ»ΠΈ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ( array-like) ΠΎΠ±ΡΠ΅ΠΊΡ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»ΡΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΊΠ°ΠΊ Π½Π΅ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π°. ΠΠ½ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ ΠΎΡΠΎΡΠΈ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° length ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠΎΡΠ΅ΠΌΡ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ , Π½ΠΎ ΠΎΠ½ΠΎ Π΅ΡΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ².
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΠΏΠΎΠ·Π°ΠΈΠΌΡΡΠ²ΡΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΈΡ Π½Π° Π½ΡΠΌ ΠΆΠ΅. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ( array-like) ΡΡΠΎ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ Π² ΡΠ΅Π»ΠΎΠΌ ΡΡΠΎ Π½Π΅ ΠΌΠ°ΡΡΠΈΠ²:
Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ· ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π½Π° Π½Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π’Π°Π΄Π°ΠΌ! ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΠΏΡΠ΅Π»Π΅ΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π°ΠΌ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Π½Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΈ Π·Π°ΠΈΠΌΡΡΠ²ΡΠ΅ΠΌ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠΏΡΡΡ-ΡΠ°ΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ.
ΠΠ±ΡΠ΅ΠΊΡ arguments ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ Π²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Π² JavaScript β ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΈ ΠΏΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ call() ΠΈ apply() ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΡΠΎ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
Π‘ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΡ ΡΠ·Π½Π°Π»ΠΈ Π±ΡΡΡΡΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ. Π ΠΈΠΌΠ΅Π½Π½ΠΎ:
ΠΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ apply() c arguments ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅, Π½ΠΎ ΡΠΆΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠ°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ Apply() ΠΈ Call()
ΠΠ°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΆΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ Π·Π°ΠΈΠΌΡΡΠ²ΡΠ΅ΠΌ, ΡΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΉΠ΄Π΅ΠΌ Π²Π°-Π±Π°Π½ΠΊ ΠΈ ΠΏΠΎΠ·Π°ΠΈΠΌΡΡΠ²ΡΠ΅ΠΌ Π½Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· Array (ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²) ΠΈΠ»ΠΈ ΠΈΠ· String (ΡΡΡΠΎΠΊ):
ΠΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΎΡΠΈΡΠ΅ Π·Π½Π°ΡΡ, ΡΡΠΎ ΡΠ»ΡΡΠΈΡΡΡ Π΅ΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π·Π°ΠΈΠΌΡΡΠ²ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ. ΠΠ·ΠΌΠ΅Π½ΠΈΡΡΡ Π»ΠΈ ΡΠ°ΠΌ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΠΉ (ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ) ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ»ΠΈ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π° Π±Π΅Π· Π»ΡΠ±ΠΎΠΉ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·ΠΈ Ρ Π½ΠΈΠΌ? ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΡΠ²Π΅ΡΠΈΠΌ Π½Π° ΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ Π±ΡΡΡΡΡΠΌ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ:
ΠΠ°ΠΊ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΡΠ½ΡΡΡΡΡ Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΡΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎ ΠΏΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΠΎΠ»Π½ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π΅Ρ Π·Π°ΠΈΠΌΡΡΠ²ΡΠ΅ΠΌ (Π‘ΡΡΠ»Π°ΡΡΡ Π½Π° Π΅Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ).
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ apply() Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΡΠΎΡΡΠ°Π²Π½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ
ΠΡΠ° ΡΠ΅Ρ Π½ΠΈΠΊΠ°, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· ΡΠΎΡΡΠ°Π²Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΅ΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ β Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π° Π½Π΅ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅. ΠΡΠ½ΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΈΡΠ»ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ»ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΡΠΈΠ½ΡΡΡ.
Math.max() ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² JavaScript:
ΠΠΎΡ ΡΡΡ, Ρ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, Π½Π°ΠΌ ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ apply(). ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΡ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ ΡΠ²Π΅ΡΡ Ρ, ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΡΠ΅Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ apply(), ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ:
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠΊΠ½ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ Π΅ΡΡ Π»ΡΡΡΠ΅ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° apply() :
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ΅ΡΠΎΠ΄ call()
Π‘ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ call() Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ.
ΠΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ β ΠΌΠ΅ΡΠΎΠ΄Ρ
Π JavaScript Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° JavaScript, ΡΠΎ ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ 3 ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ β firstName, lastName, fullName:
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ this
Π ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ this ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° «Π²Π»Π°Π΄Π΅Π»ΡΡΠ°» ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ this β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ person, ΠΊΠΎΡΠΎΡΡΠΉ «Π²Π»Π°Π΄Π΅Π΅Ρ» ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ fullName.
ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ this.firstName ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ firstName ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
JavaScript ΠΌΠ΅ΡΠΎΠ΄ call()
ΠΠ΅ΡΠΎΠ΄ call() ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ JavaScript. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Ρ Π»ΡΠ±ΡΠΌ Π²Π»Π°Π΄Π΅Π»ΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° (ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°).
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ call() Π»ΡΠ±ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ fullName, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΡ person, Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ person1:
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ fullName, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΡ person, Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ person2:
ΠΠ΅ΡΠΎΠ΄ call() Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌ
ΠΠ΅ΡΠΎΠ΄ call() ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ:
Π€ΡΠ½ΠΊΡΠΈΠΈ
— ΡΡΠΎ Π±Π»ΠΎΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ JavaScript, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, ΠΈΠ»ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ, ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ ΠΏΠΎΠ½ΡΡΠΈΠ΅ΠΌ Β«ΡΡΠ½ΠΊΡΠΈΡΒ» ΠΏΠΎΠ΄ Π΄ΡΡΠ³ΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°. Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ: ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΈ ΠΈΠ³ΡΠ°ΡΡ ΡΠΎΠ»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π€ΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠ·ΡΠΊΠ΅ JavaScript ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΠΈΠΌΠ΅Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΈ Π΄Π°ΠΆΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Ρ.
Π JavaScript Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π² Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ, ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΠΌ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° function, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ: ΠΎΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡ Π½ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠΌΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ: ΠΏΡΠΈ Π΅Π³ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΈΠΌΡ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅Π»Π΅ ΡΠ°ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ°ΡΠ° ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ Π²ΠΎΠΊΡΡΠ³ ΡΠΏΠΈΡΠΊΠ° ΠΈΠ· Π½ΡΠ»Ρ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ², ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ Π·Π°ΠΏΡΡΡΠΌΠΈ
ΠΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π±ΡΠ΄ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
ΠΠ°ΡΠ° ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ Ρ Π½ΡΠ»Π΅ΠΌ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ JavaScript Π²Π½ΡΡΡΠΈ
ΠΡΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ: ΠΎΠ½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²Π½ΠΎΠ²Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ. ΠΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ Π΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΠΏΡΠΎΡΠΈΠ², Π½Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ Π² ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΈΠ°Π»Π° Π²ΡΡΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΠ΅Π±Ρ ΡΠ°ΠΌΠΎΠΉ. ΠΡΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΈΠΌΡ, Π΄Π°Π½Π½ΠΎΠ΅ ΠΈΠΌΡ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΌΠΈ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ (Π½ΠΎ Π½Π΅ Π²ΡΠ΅) ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ return. ΠΠ½ΡΡΡΡΠΊΡΠΈΡ return Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ (Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΎ) Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΡΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ return ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ undefined. ΠΡΠ»ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ return ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π²Π΅ΡΠ½Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ undefined.
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠΈΡΠ»ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈ Π² Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ return ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. Π€ΡΠ½ΠΊΡΠΈΡ printprops() Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ Π² ΡΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅: Π΅Π΅ ΡΠ°Π±ΠΎΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΠΈΠΌΠ΅Π½Π° ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠΉ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ return. Π€ΡΠ½ΠΊΡΠΈΡ printprops() Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ undefined. (Π€ΡΠ½ΠΊΡΠΈΠΈ, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΠΌΠΈ.)
ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΠΉ ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π΅Π΅ Π²ΡΠ·ΠΎΠ²Π°. ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΡΠ·ΠΎΠ²Π°. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Π° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ Π·Π° Π½ΠΈΠΌ ΠΊΡΡΠ³Π»ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΠ· Π½ΡΠ»Ρ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ-Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ Π·Π°ΠΏΡΡΡΠΌΠΈ, Π²Π½ΡΡΡΠΈ.
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ Π²ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ-Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ (ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ), ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ, ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. Π ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΡΠ·ΠΎΠ²Π°. ΠΡΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ Π΅Π΅ ΠΊΠΎΠ½ΡΠ° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ undefined. ΠΡΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ return, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π·Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ return, ΠΈΠ»ΠΈ undefined, Π΅ΡΠ»ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ return Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΡΠΌΠ° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠΎΡΠΊΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΠΌΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²:
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅: ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΡΠ·ΠΎΠ²Π°. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°ΡΡΠ΅ΠΉ: ΠΎΠ±ΡΠ΅ΠΊΡΠ° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ obj) ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° (method). Π ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡ obj ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π°, ΠΈ ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° this. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
Π ΡΠ·ΡΠΊΠ΅ JavaScript, Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΈΠΏΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π° ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΡΠΈΠΏΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΡΠ·ΡΠΊΠ΅ JavaScript Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². Π ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π°Ρ Π½ΠΈΠΆΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΈΡΠ»Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². Π Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠΈΠΏΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½Π° Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ
ΠΠΎΠ³Π΄Π° ΡΠΈΡΠ»ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠΈΡΠ»Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ undefined. Π§Π°ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΠΏΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π±ΡΠ»ΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°Π·ΡΠΌΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΡΡΠ΅Π½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π²Π΅ΡΡΠ°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠΏΡΡΡΠΈΡΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π²Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΠΏΡΡΡΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ: ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½ ΡΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ undefined. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ /* Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ */ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π΅Ρ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌ.
Π‘ΠΏΠΈΡΠΊΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π±ΡΠ»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ func, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ x. ΠΡΠ»ΠΈ Π²ΡΠ·Π²Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ Π΄Π²ΡΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° x ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ arguments[0]. ΠΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ arguments[1]. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π°ΡΡΠΎΡΡΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ, arguments ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ length, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Π’ΠΎ Π΅ΡΡΡ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ func, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠΉ Ρ Π΄Π²ΡΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, arguments.length ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 2.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π·Π°ΡΠ°ΡΡΡΡ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠ°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅. ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° JavaScript ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠ»ΡΡΠ°Π΅Π²: ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ undefined, Π° Π»ΠΈΡΠ½ΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΡΡΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ.
ΠΠ±ΡΠ΅ΠΊΡ Arguments ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ Π²Π°ΠΆΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ JavaScript-ΡΡΠ½ΠΊΡΠΈΠΉ: ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π»ΡΠ±ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ (Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Math.max()):
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ·ΠΎΠ²Π° Ρ ΠΏΡΡΡΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠ΄Π΅Ρ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ°Π·ΡΠΌΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ arguments[] ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΆΠΈΠ΄Π°ΡΡΠ΅ΠΉ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π·Π° ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΠΎΠΌΠΈΠΌΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡ Arguments ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° callee ΠΈ caller. ΠΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² Π² ΡΡΡΠΎΠ³ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ECMAScript 5 Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ Π²ΠΎΠ·Π±ΡΠΆΠ΄Π°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ TypeError. ΠΠ΄Π½Π°ΠΊΠΎ Π² Π½Π΅ΡΡΡΠΎΠ³ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡ ECMAScript ΡΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ, ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ callee ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ. Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ caller Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ, Π½ΠΎ ΠΎΠ½ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ ΠΈ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ, Π²ΡΠ·Π²Π°Π²ΡΡΡ ΡΠ΅ΠΊΡΡΡΡ.
Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ caller ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠ΅ΠΊΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ², Π° ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ callee ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ:
Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠ½ΠΊΡΠΈΠΉ
Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ length
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ check(), ΠΏΠΎΠ»ΡΡΠ°ΡΡΠ°Ρ ΠΌΠ°ΡΡΠΈΠ² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² arguments ΠΎΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ½Π° ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ arguments.length (ΡΠΈΡΠ»ΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²) ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ arguments.callee.length (ΡΠΈΡΠ»ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²), ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠΎΠ»ΡΠΊΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ½Π° ΠΎΠΆΠΈΠ΄Π°Π΅Ρ. ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΠ° ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ check() ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΅ΡΡΠΎΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ func(), Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠ°Ρ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ check():
Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ prototype
ΠΡΠ±Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ prototype, ΡΡΡΠ»Π°ΡΡΠ΅Π΅ΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°. ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°. ΠΠΎΠ³Π΄Π° ΡΡΠ½ΠΊΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠΎΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, Π²Π½ΠΎΠ²Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°.
ΠΡΠΎΡΠΎΡΠΈΠΏΡ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ prototype ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈΡΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΠ΅ΡΠΎΠ΄Ρ call() ΠΈ apply()
ΠΠ΅ΡΠΎΠ΄Ρ call() ΠΈ apply() ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΡΠ²Π΅Π½Π½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½Π° Π±ΡΠ»Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΎΠ±ΠΎΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ, call() ΠΈ apply(), ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ; ΡΡΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΡΠ·ΠΎΠ²Π° ΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° this Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. Π§ΡΠΎΠ±Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ func() (Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²) ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡΠ° obj, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠΌ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², call() ΠΈΠ»ΠΈ apply():
ΠΡΠ±ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π²ΡΠ·ΠΎΠ²Π° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ (Π³Π΄Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ obj Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ m):
ΠΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° call(), ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π° ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΡΠ·ΠΎΠ²Π°, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ΅ΡΠΎΠ΄ apply() Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ call(), Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΏΠΎΡΠΎΠ±Π½Π° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΌΠ΅ΡΠΎΠ΄ apply() ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΠ°ΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° call():
ΠΠ΅ΡΠΎΠ΄ bind()
ΠΠ΅ΡΠΎΠ΄ bind() Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π² ECMAScript 5, Π½ΠΎ Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠΌΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π² ECMAScript 3. ΠΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° bind() ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ²ΡΠ·Π°ΡΡ (bind) ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. ΠΡΠ»ΠΈ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ bind() ΡΡΠ½ΠΊΡΠΈΠΈ func ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅ΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡ obj, ΠΎΠ½ Π²Π΅ΡΠ½Π΅Ρ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ. ΠΡΠ·ΠΎΠ² Π½ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ) Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π²ΡΠ·ΠΎΠ² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ func ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° obj. ΠΡΠ±ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π’Π°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Π»Π΅Π³ΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² ECMAScript 3, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:


