ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ JavaScript Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ². ΠΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ ΡΠΎΡΡΠΎΠΈΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ call. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΎΠ΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΄ΡΡΠ³ΠΎΠΉ, Ρ.Π΅. ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ this. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ call ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠ»Π°ΡΡ Animal (ΠΠΈΠ²ΠΎΡΠ½ΠΎΠ΅), Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ·Π²Π°ΡΡ Π΅Π³ΠΎ ΠΈΠ· ΠΊΠ»Π°ΡΡΠ° Cat ΠΈΠ»ΠΈ Dog.
function Animal(name){ this.name = name; this.species = 'Animal'; this.sleep = function(){ alert(this.name+' ΡΠΏΠΈΡ: Π₯ΡΡΡΡ'); } } function Cat(name){ Animal.call(this, name); this.talk = function(){ alert('ΠΡΡ!'); } } function Dog(name){ Animal.call(this, name); this.talk = function(){ alert('ΠΠ°Π²!'); } } var sam = new Cat('Sam'); var joe = new Dog('Joe'); sam.sleep(); // Sam ΡΠΏΠΈΡ: Π₯ΡΡΡΡ joe.sleep(); // Joe ΡΠΏΠΈΡ: Π₯ΡΡΡΡ sam.talk(); // ΠΡΡ! joe.talk(); // ΠΠ°Π²!
Π₯ΠΎΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΌΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ Π² ΡΠ²ΠΎΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°: Π²ΡΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ, Π·Π°Π΄Π°Π½Π½ΡΠ΅ Π½Π° Animal, Π½Π΅ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ Cat ΠΈΠ»ΠΈ Dog. ΠΠ°ΠΊ ΠΌΡ Π·Π½Π°Π΅ΠΌ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π»Π΅ΠΊΡΠΈΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ "this." ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π· ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΏΡΠ΅Π΄ΠΊΠ°. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π· ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Animal, Cat ΠΈΠ»ΠΈ Dog ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΠΎΠ²Π°Ρ ΠΊΠΎΠΏΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ species ΠΈ sleep. ΠΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ, ΡΡΠΎ Π½Π΅ ΡΠ°ΠΌΡΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±.
ΠΡΡΡΠΈΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π½Π° ΠΊΠ»Π°ΡΡΠ΅-ΠΏΠΎΡΠΎΠΌΠΊΠ΅. ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΊΠ»Π°ΡΡΠ° ΠΏΡΠ΅Π΄ΠΊΠ°:
function Animal(name){ this.name = name; } Animal.prototype = { species: 'Animal', sleep : function(){ alert(this.name+' ΡΠΏΠΈΡ: Π₯ΡΡΡΡ'); } } function Cat(name){ Animal.apply(this, arguments); } Cat.prototype = new Animal; Cat.prototype.species = 'Cat'; Cat.prototype.talk = function(){ alert('ΠΡΡ!'); } function Dog(name){ Animal.apply(this, arguments); } Dog.prototype = new Animal; Dog.prototype.talk = function(){ alert('ΠΠ°Π²!'); } var sam = new Cat('Sam'); var joe = new Dog('Joe'); sam.sleep(); // Sam ΡΠΏΠΈΡ : Π₯ΡΡΡΡ joe.sleep(); // Joe ΡΠΏΠΈΡ: Π₯ΡΡΡΡ alert(sam.species); // Cat alert(joe.species); // Animal - Π΄Π»Ρ Dog ΡΡΠ½ΠΊΡΠΈΡ species Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΡΠΎ Π΄Π°Π»ΡΡΠ΅ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΡΠΎΠ΄ ΡΠΎΠ±Π°ΠΊ ΠΈΠ»ΠΈ ΠΊΠΎΡΠ΅ΠΊ ΠΈ Ρ.Π΄.
ΠΠ°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ (Ρlosure) ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² JavaScript. ΠΡΠ»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΎΡΡΡΠΌ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ΠΌ, ΡΠΎ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΡΠ°ΠΊ Π²Π°ΠΆΠ½ΠΎ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΠΈ Π»ΡΠ±ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² JavaScript. ΠΡΠΎ Π·Π²ΡΡΠΈΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π»ΡΡΡΠ΅ Π½Π°ΡΠ°ΡΡ Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°:
function beginAdding(a){ a *= 5; return function finishAdding(b){ alert(a+b); } } var add = beginAdding(10); add(20); // 70
ΠΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ 'a' ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 10 ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ beginAdding, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ 'b' ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 20 ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ finishAdding.
Π ΡΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ 'add'? ΠΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ finishAdding Ρ ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ Ρ Π½Π΅ΠΉ Π²ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ beginAdding. ΠΠΎΠΏΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ 'a' ΠΈΠ· beginAdding ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠΈ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ. Internet Explorer, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΌ ΡΡΠ΅ΡΠΊΠ°ΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΡ ΠΎ ΡΠ±ΠΎΡΠΊΠ΅ ΠΌΡΡΠΎΡΠ° Π² Internet Explorer, ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π² ΡΡΠΎΠΌ Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΡΠΈΡΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ ΠΎΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Internet Explorer ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ°: ΠΎΠ΄ΠΈΠ½ Π΄Π»Ρ JavaScript ΠΈ Π΄ΡΡΠ³ΠΎΠΉ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² DOM. ΠΡΠΈ Π²ΡΠ³ΡΡΠ·ΠΊΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΈ ΡΠ΄Π°Π»ΡΠ΅Ρ Π²Π΅ΡΡ ΠΊΠΎΠ΄ JavaScript ΠΈ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ DOM ΡΠΎ ΡΡΡΠ°Π½ΠΈΡΡ. Π£ΡΠ΅ΡΠΊΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅ΡΡΡΡ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠ° DOM Π² JavaScript ΠΈ ΡΠ½ΠΎΠ²Π° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ DOM ΠΈΠ»ΠΈ ΠΈΠ· JavaScript-->Dom-->Javascript. Internet Explorer Π·Π°ΠΏΡΡΡΠ²Π°Π΅ΡΡΡ ΠΈ Π½Π΅ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΡΠΈ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΠ»ΠΊΠ΅.
var someInput = document.getElementById('inputbox'); var someFunction = function(){ alert(someInput.value); } someInput.onclick = someFunction;
ΠΠ΄Π΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ» Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠΉ. ΠΠ±ΡΠ΅ΠΊΡ DOM someInput Π²ΠΎΠ²Π»Π΅ΡΠ΅Π½ Π² Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ someFunction ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. ΠΡΠ°ΡΠ·Π΅Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΎ ΡΠ΄Π°Π»ΠΈΡΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΈΠΌΠ΅Π΅ΠΌ ΡΡΠ΅ΡΠΊΡ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ°ΠΌΡΠΊΠ°Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡ, ΡΠ°ΡΡΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΎΡΠΎΠ·Π½Π°Π²Π°Ρ ΡΡΠΎΠ³ΠΎ. ΠΠΎΠ·ΡΠΌΠ΅ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
function Animal(name){ this.sleep = function(){ alert(name+' ΡΠΏΠΈΡ: Π₯ΡΡΡΡ'); } }
ΠΠΎΠΆΠ½ΠΎ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΡΡΠΎΠ³ΠΎ, Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ 'name' Π² ΡΡΠ½ΠΊΡΠΈΠΈ sleep ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Animal. ΠΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅.
ΠΠ°ΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅:
var x = 5; var n = function(){ y=10; return y; }
ΠΠ΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅, Ρ ΠΎΡΡ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ. ΠΠΎΡΠ΅ΠΌΡ? ΠΠΎΠ³Π΄Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΠ½Π° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ .
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΏΠΎΠ΄ΠΎΡΠ»ΠΈ ΠΊ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ ΠΎΠ±Π»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. ΠΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠΎΠ΄Π° ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΡΡΠ΅ΠΊΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅, ΠΎΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
var x = 5; var alertX1 = function(){ alert(x); } x = 10; var alertX2 = function(){ alert(x); } alertX1(); alertX2();
ΠΠ±Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ²Π΅Π΄ΡΡ 10. ΠΠΎΡΠ΅ΠΌΡ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΊΠΎΠΏΠΈΡ Ρ .
ΠΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ x Π² Π»ΡΠ±ΠΎΠΉ ΡΠΎΡΠΊΠ΅, ΡΠΎ ΠΎΠ±Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΡΠ°Π·ΡΡ ΡΡΠΎ. ΠΠ°ΠΊ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ? ΠΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ:
function makeClosure(x){ return function(){ alert(x); } } var x = 5; var alertX1 = makeClosure(x); x = 10; var alertX2 = makeClosure(x); alertX1(); // 5 alertX2(); // 10
ΠΡΠΎ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠ»ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΡ ΠΊΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π²Π°Π» ΡΡΠ΅ΡΠΊΡ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΎ ΡΡΠ΅ΡΠΊΠ° Π±ΡΠ΄Π΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅; ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΡΡΠΎΠΌ ΠΏΡΠΎΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
ΠΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Ρ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π² ΠΊΠ°ΠΆΠ΄ΡΡ ΠΈΠ· Π΄Π²ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ x ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΡΠΈΡΠ»ΠΎΠΌ. JavaScript Π²ΡΠ΅Π³Π΄Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΠΈΡΠ»Π° ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ - ΡΠΎ Π΅ΡΡΡ Π²ΡΠ΅Π³Π΄Π° Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΊΠΎΠΏΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π‘ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Π²ΡΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ½Π°ΡΠ΅. ΠΡΠ»ΠΈ Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΡΠΎ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΡΠ»ΠΊΠ° Π² Π΄Π²ΡΡ Π½Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΊΠΎΠΏΠΈΡ x ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ:
function makeClosure(x){ return function(){ alert(x.val); } } var x = {val:5}; var alertX1 = makeClosure(x); x.val = 10; var alertX2 = makeClosure(x); alertX1(); // 10 alertX2(); // 10
ΠΡΠ»ΠΈΡΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ x ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΊΠΎΠΏΠΈΡ x. ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ x ΠΎΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ.
ΠΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠΉ? ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΡΠ»ΠΎΠΊ. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ ΡΠΎΠ±ΡΡΠΈΠ΅ onclick, ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ DOM.
Π§Π°ΡΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅Π²ΠΈΠ½Π½ΡΠΉ Ρ Π²ΠΈΠ΄Ρ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΠ΅ΡΠΊΡ ΠΈ Π΅Π΅ Π±ΡΠ²Π°Π΅Ρ ΠΊΡΠ°ΠΉΠ½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ. Π ΡΡΠ°ΡΡΡΡ, ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ. ΠΡΠ»ΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ, ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΅ΡΠΊΡ. ΠΡΡΠ»Π΅Π΄ΠΈΡΡ, Π³Π΄Π΅ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π΄ΡΡΠ³Π°Ρ Π·Π°Π΄Π°ΡΠ°, Π½ΠΎ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ!
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ Π»Π΅ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ²ΡΡΠ΅Π½ ΠΎΡΠ½ΠΎΠ²Π°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ AJAX!
ΠΠ΅ΠΊΡΠΈΡ 10. ΠΡΠ½ΠΎΠ²Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ AJAX
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΠΌΠΈΠ½ AJAX ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠΈΡΠΎΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ Π½Π΅ΠΎΠ±ΡΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. ΠΠ΄Π½Π°ΠΊΠΎ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π³ΠΎΠ΄ JavaScript Π² ΡΡΠΈΠ»Π΅ AJAX ΡΡΠ°Π» ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΈ ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ Π²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°Π»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ. Google Maps ΠΈ GMail ΡΠ²Π»ΡΡΡΡΡ Π΄Π²ΡΠΌΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ AJAX, Π½ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠΈΡΡ Π½Π°ΡΠ°Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π½Π° ΡΠ²ΠΎΠΈΡ ΡΠ°ΠΉΡΠ°Ρ .