JS Help
Types:
Engine: byte stream stream decoder π tokens parser π Abstract Syntax Tree interpreter π byte code optimizing compiler
Event Loop: callstack queue event loop
map
, filter
and slice
return a new array
find
returns an element
reduce
returns a reduced value
push
returns length
TypeErrors get thrown when a value is not of the expected type. SyntaxErrors get thrown when you've written something that isn't valid JavaScript, for example when you've written the word return as retrun. ReferenceErrors get thrown when JavaScript isn't able to find a reference to a value that you're trying to access.
bind()
only returns a copy of the bound function
call()
executes the bound function immediately
Falsy values:
public
- Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΊΠ°ΠΊ Π² ΠΊΠ»Π°ΡΡΠ°Ρ
, Π² ΠΊΠΎΡΠΎΡΡΡ
ΠΎΠ½ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ, ΡΠ°ΠΊ ΠΈ Π² ΠΊΠ»Π°ΡΡΠ°Ρ
ΠΏΠΎΡΠΎΠΌΠΊΠ°Ρ
. Π’Π°ΠΊΠΆΠ΅ ΠΊ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΡΠ»Π΅Π½Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠ°
protected
- Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ ΠΊΠ»Π°ΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠ°ΠΌ. ΠΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ²
private
- Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ ΠΊΠ»Π°ΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ. ΠΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΈ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ²
abstract
- ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΊΠ»Π°ΡΡ, Π² Π½Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π°Π±ΡΡΡΠ°ΠΊΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, ΠΈ ΠΈΡ
Π½Π°Π΄ΠΎ ΠΏΠ΅ΡΠ΅Π½Π°Π·Π½Π°ΡΠΈΡΡ Π² ΠΏΠΎΡΠΎΠΌΠΊΠ΅
readonly
- Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ²
static
- Π½Π΅Ρ Ρ ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ²
Keywords
infer
- returns a type from a genericΠΠ»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
Π·Π½Π°ΠΊΠΎΠ² Π² ΡΡΡΠΎΠΊΠΈ, Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ /
ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΈΠΌΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ escaping:
"He said \"Hi!\""; // He said Hi!
'He said "Hi!"'; // He said Hi!
`He said \'Hi!\'`; // Wrong punctuatin, but just for example
Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΊΠΈΡ
Π·Π½Π°ΠΊΠΎΠ² (escape sequences) Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ****\u
*hhhh*
Π² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ Unicode Ρ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΌ (hexadecimal) ΠΊΠΎΠ΄ΠΎΠΌ:
Unicode character value | Escape sequence | Meaning | Category |
---|---|---|---|
\u0008 | \b | Backspace | |
\u000C | \f | Form feed | White space |
\u000A | \n | Line feed (new line) | Line terminator |
\u000D | \r | Carriage return | Line terminator |
\u0009 | \t | Tab | White space |
\u000B | \v | Vertical tab | White space |
\u0027 | ' | Single quotation mark (') | |
\u0022 | " | Double quotation mark (") | |
\u005C | \ | Backslash | |
\u0020 | Space | White space | |
\u00A0 | Nonbreaking space | White space | |
\u2028 | Line separator | Line terminator | |
\u2029 | Paragraph separator | Line terminator | |
\uFEFF | Byte order mark | White space |
JavaScript ΠΈΠΌΠ΅Π΅Ρ Π½Π°Π±ΠΎΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΠΎΡΠ°ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ Π΅ΠΌΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±Π΅Π· Π·Π°ΠΏΠΈΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π²Π°ΠΆΠ΄Ρ:
let x = 4;
x += 2; // x equals 6
let y = 4;
y -= 2; // y equals 2
let z = 4;
z *= 2; // z equals 8
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² JavaScript, ΠΊΠ°ΠΊ ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ.
ΠΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ++
ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π½Π° 1:
let i = 2;
i++; // Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ Π΄Π»Ρ i = i + 1.
console.log(i); // 3
ΠΠ΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ --
ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π½Π° 1:
let i = 2;
i--; // Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡΠΎΡΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ Π΄Π»Ρ i = i - 1.
console.log(i); // 1
ΠΡΠ·ΡΠ²Π°ΡΡ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ i++
(ΠΏΠΎΡΡΡΠΈΠΊΡΠ½Π°Ρ ΡΠΎΡΠΌΠ°), Π½ΠΎ ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ++i
(ΠΏΡΠ΅ΡΠΈΠΊΡΠ½Π°Ρ ΡΠΎΡΠΌΠ°).
ΠΠ±Π΅ ΡΡΠΈ ΡΠΎΡΠΌΡ Π·Π°ΠΏΠΈΡΠΈ Π΄Π΅Π»Π°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅. ΠΠΎ Π΅ΡΡΡ ΡΠ°Π·Π½ΠΈΡΠ° ΠΈ ΠΎΠ½Π° Π²ΠΈΠ΄Π½Π° ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΈΠ»ΠΈ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Π½ΠΎ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΡΠΎΠΌ ΠΆΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
let i = 1;
let a = ++i;
console.log(a);
// -> 2
ΠΡΠ·ΠΎΠ² ++i
ΡΠ²Π΅Π»ΠΈΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, Π° Π·Π°ΡΠ΅ΠΌ Π²Π΅ΡΠ½ΡΡ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² a
. Π’Π°ΠΊ ΡΡΠΎ Π² a
ΠΏΠΎΠΏΠ°Π΄ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ i
ΠΏΠΎΡΠ»Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ.
ΠΠΎΡΡΡΠΈΠΊΡΠ½Π°Ρ ΡΠΎΡΠΌΠ° i++
ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΠΎΠΉ ++i
ΡΠ΅ΠΌ, ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠ°ΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π±ΡΠ²ΡΠ΅Π΅ Π΄ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½ΠΈΠΆΠ΅ Π² a
ΠΏΠΎΠΏΠ°Π΄ΡΡ ΡΡΠ°ΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ i
, ΡΠ°Π²Π½ΠΎΠ΅ 1
:
let i = 1;
let a = i++;
console.log(a);
// -> 1
ΠΡΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π° Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΈΠ»ΠΈ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ β Π±Π΅Π· ΡΠ°Π·Π½ΠΈΡΡ, ΠΊΠ°ΠΊΡΡ ΡΠΎΡΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
let i = 0;
i++;
++i;
console.log(i);
// -> 2
ΠΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΠΈ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π»ΡΠ±ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ . ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ°Π½ΡΡΠ΅, ΡΠ΅ΠΌ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
let i = 1;
console.log(2 * ++i);
// -> 4
let i = 1;
console.log( 2 * i++);
// -> 2, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΡΡ ΡΠ°Π½ΡΡΠ΅ Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΠ½ΡΠ» ΡΡΠ°ΡΠΎΠ΅
console.log(i);
// -> 2
console.log(2 * i++);
// -> 4
console.log(i);
// -> 3
ΠΠΎΠ²ΡΠΉ Π² ES7 ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ **
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΠΎΠ·Π²ΠΎΠ΄ΠΈΡΡ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ:
const square = (x) => x**2;
square(2);
// -> 4
Π ΠΏΡΠΈΠΌΠ΅ΡΡ Π΅ΡΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (expression - ΡΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅) ΡΠΎΠΎΡΠ½ΠΎΡΠΈΡΡΡ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ, ΡΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ (statement) ΡΠΎΠΎΡΠ½ΠΎΡΠΈΡΡΡ Ρ ΡΠ΅Π»ΡΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΉ.
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ ;
ΠΏΠΎΡΠ»Π΅ Π½Π΅Π³ΠΎ:
1;
!false;
Π’ΠΎΡΠΊΡ Π·Π°ΠΏΡΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²ΠΈΡΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π°, Π½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π½ΡΠΆΠ½Π°, ΠΏΠΎ-ΡΡΠΎΠΌΡ Π»ΡΡΡΠ΅ ΡΡΠ°Π²ΠΈΡΡ Π²ΡΠ΅Π³Π΄Π°.
Π‘ΡΠ΅Π΄Π° (environment) - ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ. Π‘ΠΈΡΡΠ΅ΠΌΡ JavaScript Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΡΠ΄ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Π²Π°ΡΡ ΡΡΠ΅Π΄Ρ.
Instance (ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°) - ΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ (ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ) ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ
. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠ° Hello
, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΠΎΡΡΠΈ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² JavaScript ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ null
ΠΈ undefined
:
null.length;
// -> TypeError: null has no properties
ΠΠΎΠΆΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΡΡΠΎΠΊΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° .length
:
console.log('Hello'.length);
Π ΡΠ°ΠΊ ΠΆΠ΅ .log
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ console.log
.
ΠΠ²Π° ΡΠΈΠΏΠΈΡΠ½ΡΡ
ΡΠΏΠΎΡΠΎΠ±Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ Π² JavaScript - ΡΡΠΎ ΡΠΎΡΠΊΠ° ΠΈ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ. ΠΠ±Π° value.x
ΠΈ value[x]
ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Ρ value
, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈ ΡΠΎΠΌΡ ΠΆΠ΅. Π Π°Π·Π½ΠΈΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΡΠΊΠΈ, ΡΠ»ΠΎΠ²ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΡΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΎΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ (evaluats) Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° name
, Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ value.name
. ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π½Π°Π·Π²Π°Π½Π½ΠΎΠ΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ i
, Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ value[i]
. Π‘Π²ΠΎΠΉΡΡΠ²ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±Π°Ρ ΡΡΡΠΎΠΊΠ°, Π½ΠΎ Π½ΠΎΡΠ°ΡΠΈΡ Ρ ΡΠΎΡΠΊΠΎΠΉ (dot notation) ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Ρ, Π½Π°Π·Π²Π°Π½Π½ΠΎΠΌΡ β2β ΠΈΠ»ΠΈ βJohn Doeβ, Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ: value[2]
ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ["John Doe"]
.
ΠΠ° March 2, 2018 ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ² JavaScript Π·Π°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π° MDN Π½Π°ΡΡΠΈΡΡΠ²Π°Π΅Ρ 127 ΡΡΡΠ°Π½ΠΈΡ.
ΠΠ΅ΡΠΎΠ΄Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΡΡ, ΡΡΠΎΠ±Ρ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π±Π΅Π· ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ JavaScript. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ, Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° [Math](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math)
ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΊΠΈΡ
ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ.
ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΡ
ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ .random()
, ΡΡΠΎΠ±Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ:
console.log(Math.random()); // random number between 0 and 1
ΠΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΡΠΈΡΠ»ΠΎ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΏΡΠΎΡΡΠΎ ΡΠΌΠ½ΠΎΠΆΠΈΠ² Π½Π° Π½Π΅Π³ΠΎ:
Math.random() * 50;
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠ²Π΅Ρ Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΎΠΊΡΡΠ³Π»ΠΈΡΡ ΡΠΈΡΠ»ΠΎ, Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ Math.floor()
:
Math.floor(Math.random() * 50);
ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΡΡ.
ΠΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΡΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ:
const multiply = (a, b) => a * b;
multiply(3, 4);
// -> 12
const curriedMultiply = (a) => (b) => a * b; // ΡΡΡΠ΅Π»ΠΊΠΈ ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ
// ΡΡΠ°ΡΠ°Ρ Π²Π΅ΡΡΠΈΡ
var curriedMultiply = function curriedMultiply(a) {
return function (b) {
return a * b;
};
};
// ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ closure
curriedMultiply(3)(4);
// -> 12
const multiplyBy5 = curriedMultiply(5);
multiplyBy5(5)
// -> 25
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ a
ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²ΡΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ½ΠΎΠΆΠ°Π΅Ρ a
ΠΈ b
.
Π‘Π»ΠΈΡΠ½ΠΈΠ΅ Π΄Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ, Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅ΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠΉ:
const compose = (f, g) => (a) => f(g(a));
const sum = (num) => num + 1;
compose(sum, sum)(5);
// 1. const compose = (f, g) => (a) => f(g(5));
// 2. const compose = (f, g) => (a) => f(6);
// 3. const compose = (f, g) => (a) => 7;
// ΡΡΠ°ΡΠ°Ρ Π²Π΅ΡΡΠΈΡ, f & g ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ
var compose = function compose(f, g) {
return function (a) {
return f(g(a));
}
};
var sum = function sum(num) {
return num + 1
};
compose(sum, sum)(5);
Generators are a special kind of function with the ability to pause itself, and resume later, allowing other code to run in the meantime.
The code decides that it has to wait, so it lets other code βin the queueβ to run, and keeps the right to resume its operations βwhen the thing itβs waiting forβ is done.
All this is done with a single, simple keyword: yield
. When a generator contains that keyword, the execution is halted.
A generator can contain many yield
keywords, thus halting itself multiple times, and itβs identified by the *function
keyword, which is not to be confused with the pointer dereference operator used in lower level programming languages such as C, C++ or Go.
Generators enable whole new paradigms of programming in JavaScript, allowing:
Here is an example of a generator which explains how it all works.
function *calculator(input) {
var doubleThat = 2 * (yield (input / 2))
var another = yield (doubleThat)
return (input * doubleThat * another)
}
We initialize it with
const calc = calculator(10)
Then we start the iterator on our generator:
calc.next()
This first iteration starts the iterator. The code returns this object:
{
done: false
value: 5
}
What happens is: the code runs the function, with input = 10
as it was passed in the generator constructor. It runs until it reaches the yield
, and returns the content of yield
: input / 2 = 5
. So we got a value of 5, and the indication that the iteration is not done (the function is just paused).
In the second iteration we pass the value 7
:
calc.next(7)
and what we got back is:
{
done: false
value: 14
}
7 was placed as the value of doubleThat. Important: you might read like input / 2 was the argument, but thatβs just the return value of the first iteration. We now skip that, and use the new input value, 7, and multiply it by 2.
We then reach the second yield, and that returns doubleThat
, so the returned value is 14
.
In the next, and last, iteration, we pass in 100
calc.next(100)
and in return we got
{
done: true
value: 14000
}
As the iteration is done (no more yield keywords found) and we just return (input * doubleThat * another)
which amounts to 10 * 14 * 100
.
ΠΠ±ΡΠ΅ΠΊΡΡ (objects) JavaScript - ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ (ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΡΠ²ΠΎΠΉΡΡΠ²) ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ°Π½Π½ΡΠ΅, Ρ ΡΠ°Π½ΡΡΠΈΠ΅ΡΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅, Π½Π΅ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Ρ - ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊ Π½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²Π° ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Ρ Π½ΠΈΠΌ ΠΊΠ»ΡΡΠ° (key).
ΠΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠΈ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (key-value), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
let restaurant = {
name: 'Italian Bistro',
seatingCapacity: 120,
hasDineInSpecial: true,
entrees: ['Penne alla Bolognese', 'Chicken Cacciatore', 'Linguine Pesto'],
open: function() { // ΡΡΠΎ ΠΈ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄
console.log('${this.name} is open!');
}
};
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
let restaurant
ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ restaurant
, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ
ΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ.{}
.name
, seatingCapacity
, hasDineInSpecial
, ΠΈ entrees
ΡΡΠΎ Π²ΡΠ΅ ΠΊΠ»ΡΡΠΈ.:
.,
.ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΠ΅ΡΠ½ΠΎΠΉ Π½ΠΎΡΠ°ΡΠΈΠΈ (dot notation).
let restaurant = {
name: 'Italian Bistro',
'seating capacity': 120,
hasDineInSpecial: true,
entrees: ['Penne alla Bolognese', 'Chicken Cacciatore', 'Linguine pesto']
};
console.log(restaurant.entrees);
// -> ['Penne alla Bolognese', 'Chicken Cacciatore', 'Linguine pesto']
ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ° - ΡΡΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ ΡΠΊΠΎΠ±ΠΎΠΊ.
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ ΡΠΎΡΠ΅ΡΠ½ΠΎΠΉ Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΎΡΠΊΡΡΡΠΈΡ [
ΠΈ Π·Π°ΠΊΡΡΡΠΈΡ ]
Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠ»ΡΡΡ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
let restaurant = {
name: 'Italian Bistro',
seatingCapacity: 120,
hasDineInSpecial: true,
entrees: ['Penne alla Bolognese', 'Chicken Cacciatore', 'Linguine pesto']
};
console.log(restaurant['entrees']);
// -> ['Penne alla Bolognese', 'Chicken Cacciatore', 'Linguine pesto']
ΠΠ΄Π½ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΎ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ Π½Π°Π΄ ΡΠΎΡΠ΅ΡΠ½ΠΎΠΉ Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ, Π·Π°ΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΡΠΊΠΎΠ±ΠΎΠΊ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΊΠ»ΡΡΠ΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
let meal = 'none';
let time = 12;
// We'll use military time for this example, counting hours 0-23.
const restaurantSpecials = {
breakfast: 'The breakfast special is 20% off freshly squeezed orange juice',
lunch: 'The lunch special is 10% off appetizers',
none: 'There are no specials currently'
};
if (time < 11) { // 11 am
meal = 'breakfast';
} else if (time < 17) { // 5 pm
meal = 'lunch';
}
console.log(restaurantSpecials[meal]);
// -> The lunch special is 10% off appetizers
ΠΠ±ΡΠ΅ΠΊΡΡ ΡΡΠΈΡΠ°ΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΡΠΌΠΈ (mutable), ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΠΈΡ
ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ const
, Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΡ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Π½ΡΡΡΠΈ Π½Π΅Π³ΠΎ, Π½Π΅ Π²ΡΠ·ΡΠ²Π°Ρ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΡΠΈΠΌΠ΅Ρ:
const restaurant = {
name: 'Italian Bistro',
seatingCapacity: 120,
hasDineInSpecial: true,
entrees: ['Penne alla Bolognese', 'Chicken Cacciatore', 'Linguine pesto']
}
ΠΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ»ΡΡΠΈ appetizers
ΠΈ desserts
ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
restaurant['appetizers'] = ['Fried Calamari', 'Bruschetta'];
restaurant.desserts = ['Homemade Tiramisu', 'Cannoli'];
ΠΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ appetizers
ΠΈ desserts
Π½ΠΎΠ²ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ:
restaurant['appetizers'] = ['Fried Calamari', 'Bruschetta', 'Caprese Salad'];
restaurant.desserts = ['Homemade Tiramisu', 'Canolli', 'Cheesecake'];
ΠΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΠ°ΡΡ ΠΊΠ»ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΠ½ΠΊΡΠΈΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ (method):
const restaurant = {
name: 'Italian Bistro',
seatingCapacity: 120,
hasDineInSpecial: true,
entrees: ['Penne alla Bolognese', 'Chicken Cacciatore', 'Linguine pesto'],
openRestaurant: () => {
return 'Unlock the door, flip the open sign. We are open for business!';
},
closeRestaurant: () => {
return 'Lock the door, flip the open sign. We are closed.'
}
};
console.log(restaurant.openRestaurant());
// -> Unlock the door, flip the open sign. We are open for business!
console.log(restaurant.closeRestaurant());
// -> Lock the door, flip the open sign. We are closed.
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½Ρ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π° .openRestaurant()
ΠΈ .closeRestaurant()
, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΡΠΎ ΡΡΡΠ΅Π»ΠΊΠΎΠΉ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ restaurant
.
ΠΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ES6 ΠΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π°ΠΏΠΈΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π½Π΅ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΡΡΠ΅Π»ΠΊΠ°Ρ ΠΈ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΠΈ Ρ ΠΊΠ»ΡΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ:
const restaurant = {
name: 'Italian Bistro',
seatingCapacity: 120,
hasDineInSpecial: true,
entrees: ['Penne alla Bolognese', 'Chicken Cacciatore', 'Linguine pesto'],
openRestaurant() {
return 'Unlock the door, flip the open sign. We are open for business!';
},
closeRestaurant() {
return 'Lock the door, flip the open sign. We are closed.'
}
Π ΡΠ°ΠΊ ΠΆΠ΅, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π·Π°Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΊΠ»ΡΡΠ΅ΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
const obj = {
player: 'bobby',
experience: 100,
wizardLevel: false
}
const player = obj.player;
const experience = obj.experience;
let wizardLevel = obj.wizardLevel;
ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ (destructuring):
const {player, experience} = obj;
let {wizardLevel} = obj;
player
// -> bobby
Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° (dynamic properties), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
const name = 'john snow';
const property = 'Property';
const obj = {
[name]: 'Bob',
[1 + 3]: 'result',
[`get${property}`]() {
return this[name];
}
}
obj[name]
obj[`get${property}`]()
// -> "Bob"
ΠΠ½ΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π±ΡΠ»ΠΈ ΡΠ°Π²Π½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ:
const a = "Simon";
const b = true;
const c = {};
const obj = {
a: a,
b: b,
c: c,
}
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ°ΠΊ:
const obj = {a, b, c}
ΠΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π²Π½ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ hasDineInSpecial
Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ .openRestaurant()
:
const restaurant = {
name: 'Italian Bistro',
seatingCapacity: 120,
hasDineInSpecial: true,
entrees: ['Penne alla Bolognese', 'Chicken Cacciatore', 'Linguine pesto'],
openRestaurant() {
if (hasDineInSpecial) {
return 'Unlock the door, post the special on the board, then flip the open sign.';
} else {
return 'Unlock the door, then flip the open sign.';
}
}
};
console.log(restaurant.openRestaurant());
// -> ReferenceError: hasDineInSpecial is not defined
ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ hasDineInSpecial
Π²Π½Π΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ .openRestaurant()
.
ΠΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ this
ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ Π²Π½ΡΡΡΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
const restaurant = {
name: 'Italian Bistro',
seatingCapacity: 120,
hasDineInSpecial: true,
entrees: ['Penne alla Bolognese', 'Chicken Cacciatore', 'Linguine pesto'],
openRestaurant: function() {
if (this.hasDineInSpecial) {
return 'Unlock the door, post the special on the board, then flip the open sign.'
} else {
return 'Unlock the door, then flip the open sign.'
}
}
}
console.log(restaurant.openRestaurant());
// -> Unlock the door, post the special on the board, then flip the open sign.
this.hasDineInSpecial
Π²Π½ΡΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΠΎ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ restaurant.hasDineInSpecial
Π²Π½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ this, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ. Π Javascript this
ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π²Π½ΡΡΡΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
let myObj = {
name: 'Miti',
sayHello() {
return `${this.name} says hello!`;
}
};
ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, ΠΏΠΎΠΌΠ΅Π½ΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡ:
let yourObj = {
name: 'Timer'
};
yourObj.sayHello = myObj.sayHello;
// Sets the sayHello method on yourObj to be the sayHello method on yourObj
ΠΡΠ»ΠΈ Π²ΡΠ·Π²Π°ΡΡ yourObj.sayHello()
, ΠΎΠ½ Π²Π΅ΡΠ½Π΅Ρ 'Timer says hello!'
. this
Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΠ·Π²Π°Π½ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ yourObj
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΎΠ±Π»Π°ΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² Π²Π½ΡΡΡΠΈ yourObj
.
ΠΠ±Π»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ this
Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΡΠΎ ΡΡΡΠ΅Π»ΠΊΠΎΠΉ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°. Π ΠΎΠ±ΡΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΡΡ
this
Π²ΡΠ΅Π³Π΄Π° ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎ ΡΡΡΠ΅Π»ΠΊΠΎΠΉ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ΅Π½Π° ΠΈ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ var that = this
.
delete
ΠΈ in
Π£Π½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΡΠ΄Π°Π»ΡΠ΅Ρ Π΅Π³ΠΎ. ΠΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎ, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ:
let anObject = {left: 1, right: 2};
console.log(anObject.left);
// β 1
delete anObject.left;
console.log(anObject.left);
// β undefined
console.log("left" in anObject);
// β false
console.log("right" in anObject);
// β true
Π£Π½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ in
ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π΅ΡΡΡ Π»ΠΈ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ.
Π§ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ Π²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Object.keys
:
let obj = {
a: 'Santa',
b: 'Rudolf',
c: 'Mr. Grinch'
}
console.log(Object.keys(obj));
// -> ["a", "b", "c"]
Object.keys(obj).forEach((key, index) => {
console.log(key, obj[key]);
})
Π€ΡΠ½ΠΊΡΠΈΡ Object.assign
ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠΊΡΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ:
let objectA = {a: 1, b: 2};
Object.assign(objectA, {b: 3, c: 4});
console.log(objectA);
// -> {a: 1, b: 3, c: 4}
ΠΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ES8
ΠΠΎΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Object.values
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
let obj = {
a: 'Santa',
b: 'Rudolf',
c: 'Mr. Grinch'
}
Object.values(obj).forEach(value => {
console.log(value);
})
// ->
// Santa
// Rudolf
// Mr. Grinch
C ΠΏΠΎΠΌΠΎΡΡΡ Object.entries
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΡΠΎΡΡΠΎΡΡΠΈΡ
ΠΈΠ· ΠΏΠ°Ρ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠΊΡΠ°:
let obj = {
a: 'Santa',
b: 'Rudolf',
c: 'Mr. Grinch'
}
Object.entries(obj).forEach(value => {
console.log(value);
})
// ->
// ["a", "Santa"]
// ["b", "Rudolf"]
// ["c", "Mr. Grinch"]
ΠΠ΅ΡΠΎΠ΄Ρ getter ΠΈ setter ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π²Π½ΡΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ²ΠΎΠΉΡΡΠ² Π½Π°ΠΏΡΡΠΌΡΡ:
Setters ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
let restaurant = {
name: 'Italian Bistro',
seatingCapacity: 120,
hasDineInSpecial: true,
entrees: ['Penne alla Bolognese', 'Chicken Cacciatore', 'Linguine Pesto']
}
ΠΠ»ΡΡ seatingCapacity
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 120
. ΠΡΠ»ΠΈ ΠΎΠ½ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ, Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΅Π³ΠΎ Π³ΠΎΠ΄Π½ΠΎΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΏΠΎΠ»Π΅ seatingCapacity
ΡΠΈΡΠ»ΠΎΠΌ, ΡΠ°Π²Π½ΡΠΌ 150, Π° Π½Π΅ ΡΡΡΠΎΠΊΠΎΠΉ 'one hundred fifty``'
. ΠΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ Π² ΠΌΠ΅ΡΠΎΠ΄ setter ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
let restaurant = {
_name: 'Italian Bistro',
_seatingCapacity: 120,
_hasDineInSpecial: true,
_entrees: ['Penne alla Bolognese', 'Chicken Cacciatore', 'Linguine pesto'],
set seatingCapacity(newCapacity) {
if (typeof newCapacity === 'number') {
this._seatingCapacity = newCapacity;
console.log(`${newCapacity} is valid input.`);
} else {
console.log(`Change ${newCapacity} to a number.`)
}
}
}
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
_
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΡΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΡΡ, ΡΡΠΎ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΠ²ΠΎΠΉΡΡΠ² ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ setters Π΄Π»Ρ Π²ΡΠ΅Ρ
Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΏΠΎΠ·ΠΆΠ΅ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.set seatingCapacity()
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ newCapacity
ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ newCapacity
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π² _seatingCapacity
..seatingCapacity()
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ (conditional statement), ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ newCapacity
Ρ Π½ΠΎΠ²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ - ΡΡΠΎ ΡΠΈΡΠ»ΠΎ.this._seatingCapacity
Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ _seatingCapacity
.ΠΠ΅ΡΠΎΠ΄Ρ setter Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°:
// Sets the _seatingCapacity value to 150
restaurant.seatingCapacity = 150;
// -> 150 is valid input.
Getters Getters ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ²ΠΎΠΉΡΡΠ² Π²Π½ΡΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°:
let restaurant = {
_name: 'Italian Bistro',
_seatingCapacity: 120,
_hasDineInSpecial: true,
_entrees: ['Penne alla Bolognese', 'Chicken Cacciatore', 'Linguine pesto'],
// setters ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ³ΡΡ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
set seatingCapacity(newCapacity) {
if (typeof newCapacity === 'number') {
this._seatingCapacity = newCapacity;
} else {
console.log(`Change ${newCapacity} to a number.`)
}
},
// getters ΡΠ»ΡΠΆΠ°Ρ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅
get seatingCapacity() {
console.log(`There are ${this._seatingCapacity} seats at Italian Bistro.`);
return this._seatingCapacity;
}
}
ΠΠ΅ΡΠΎΠ΄ getter Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π±Π΅Π· ΠΌΠ΅ΡΠΎΠ΄Π°:
restaurant.seatingCapacity = 150;
const seats = restaurant.seatingCapacity;
ΠΠ»Π°ΡΡΡ (classes) - ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠΉΡΡ ΠΊΠΎΠ΄ ΠΈ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡ
ΠΎΠΆ, Π½ΠΎ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΎΡΠ»ΠΈΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ - ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ (constructor). JavaScript Π²ΡΠ·ΡΠ²Π°Π΅Ρ constructor()
ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° (instance) ΠΊΠ»Π°ΡΡΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ new
:
class Dog {
constructor(name) {
this.name = name;
this.behavior = 0;
}
}
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
Dog
ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ°.constructor()
ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° Dog
.constructor()
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, name
.constructor()
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ this
. Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΊΠ»Π°ΡΡΠ°, this
ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.this.name
, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ²ΠΎΠΉΡΠ²ΠΎ behavior
, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ±Π°ΠΊΠ° ΠΏΠ»ΠΎΡ
ΠΎ ΡΠ΅Π±Ρ Π²Π΅Π΄Π΅Ρ. Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ behavior
Π²ΡΠ΅Π³Π΄Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π½ΡΠ»Π΅ΠΌ.ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ (instance) ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ°, Π½ΠΎ Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
class Dog {
constructor(name) {
this.name = name;
this.behavior = 0;
}
}
const halley = new Dog('Halley'); // ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Dog
console.log(halley.name); // Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ, ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΠΎΠ΅ Π² halley
// -> "Halley"
console.log(halley instanceof Dog); // ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ halley ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΠ΅Π»Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ° Dog
// -> true
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
halley
Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Dog
.Dog
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ new
ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Dog
. new
Π²ΡΠ·ΡΠ²Π°Π΅Ρ constructor()
, Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠΎΠ΄ Π²Π½ΡΡΡΠΈ Π½Π΅Π³ΠΎ ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ.'Halley'
ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Dog
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΈΠΌΡ 'Halley'
Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° name
.name
Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ halley
Π²ΡΠ²ΠΎΠ΄ΠΈΡ 'Halley'
Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ.Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², setters ΠΈ getters ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅Π»ΡΠ·Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π·Π°ΠΏΡΡΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ:
class Dog {
constructor(name) {
this._name = name;
this._behavior = 0;
}
get name() {
return this._name;
}
get behavior() {
return this._behavior;
}
incrementBehavior() {
this._behavior++;
}
}
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π²ΡΠ·ΠΎΠ²Π° ΡΠ²ΠΎΠΉΡΡΠ² ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΠΊ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² - Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΎΡΠΊΡ, Π·Π°ΡΠ΅ΠΌ ΠΈΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠ»Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ°ΠΊ ΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ.
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½Ρ Π΄Π²Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, nikko
and bradford
:
let nikko = new Dog('Nikko'); // ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±Π°ΠΊΡ Nikko
nikko.incrementBehavior(); // Π΄ΠΎΠ±Π°Π²ΠΈΡΡ 1 ΠΊ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΏΠ»ΡΡΠ° nikko
let bradford = new Dog('Bradford'); // ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±Π°ΠΊΡ Bradford
console.log(nikko.behavior); // -> 1
console.log(bradford.behavior); // -> 0
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ΄Π΅Π»Π°Π½ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Cat
. ΠΠ½ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠ°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ² (_name
ΠΈ _behavior
) ΠΈ ΠΌΠ΅ΡΠΎΠ΄ .incrementBehavior()
Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ Dog
. Π’Π°ΠΊ ΠΆΠ΅ Ρ ΠΊΠ»Π°ΡΡΠ° Cat
Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ _usesLitter
, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΊΠΎΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΡΠΈΠΊ Π΄Π»Ρ ΠΌΡΡΠΎΡΠ° π±:
class Cat {
constructor(name, usesLitter) {
this._name = name;
this._usesLitter = usesLitter;
this._behavior = 0;
}
get name() {
return this._name;
}
get usesLitter() {
return this._usesLitter;
}
get behavior() {
return this._behavior;
}
incrementBehavior() {
this._behavior++;
}
}
ΠΠΎΠ³Π΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π΅Π»ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΎΠ½ΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ°ΠΌΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ (inheritance) - ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ.
Π‘ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ (parent) ΠΊΠ»Π°ΡΡ, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΊΠ°ΠΊ ΡΡΠΏΠ΅Ρ ΠΊΠ»Π°ΡΡ (superclass), ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ (child) ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ (subclasses). ΠΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
class Animal {
constructor(name) {
this._name = name;
this._behavior = 0;
}
get name() {
return this._name;
}
get behavior() {
return this._behavior;
}
incrementBehavior() {
this._behavior++;
}
hello() {
return 'Hello, I am ' + this._name + '.'
}
}
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ±ΡΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ Animal
, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΠΈΡΡ ΠΈΡ
Π½Π° ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ Cat
:
class Cat extends Animal {
constructor(name, usesLitter) {
super(name);
this._usesLitter = usesLitter;
}
}
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
extends
Π΄Π΅Π»Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° Animal
Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ cat
.Cat
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° - name
ΠΈ usesLitter
.super
Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, super(name)
ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ° Cat
Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° Animal
. ΠΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Animal
, ΠΎΠ½ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ this._name = name;
Π΄Π»Ρ Π½ΠΎΠ²ΡΡ
ΡΠΊΠ·Π΅ΠΏΠ»ΡΡΠΎΠ² Cat
._usesLitter
ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° Cat
, ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Cat
.π ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: super
Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ constructor()
, Π° Π·Π°ΡΠ΅ΠΌ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ usesLitter
Π²ΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. Π constructor()
Π²ΡΠ΅Π³Π΄Π° Π½Π°Π΄ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ super
, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ this
- ΠΈΠ½Π°ΡΠ΅ JavaScript Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ (reference error).
ΠΠΈΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Cat
ΠΈ Π²ΡΠ·Π²Π°Π½ΠΎ Π΅Π³ΠΎ ΠΈΠΌΡ, ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° Dog
:
const bryceCat = new Cat('Bryce', false);
console.log(bryceCat._name); // -> Bryce
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠ»Π°ΡΡ Cat
ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Animal
getters ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ .incrementBehavior()
.
ΠΡΠΈΠΌΠ΅Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ:
bryceCat.incrementBehavior();
console.log(bryceCat.behavior); // -> 1
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
Cat
Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ _behavior
, getter behavior
, ΠΈ ΠΌΠ΅ΡΠΎΠ΄ .incrementBehavior()
ΠΊΠ»Π°ΡΡΠ° Animal
.bryceCat
, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Animal
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0
ΡΠ²ΠΎΠΉΡΡΠ²Ρ _behavior
..incrementBehavior()
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ _behavior
Π² bryceCat
Π½Π° 1
.behavior
.Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, getters, setters ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ.
ΠΠΈΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ getter usesLitter
. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ getters, setters ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² Π»ΡΠ±ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅:
class Cat extends Animal {
constructor(name, usesLitter) {
super(name);
this._usesLitter = usesLitter;
}
get usesLitter() {
return this._usesLitter;
}
hello() {
return super.hello() + ' I am a cat.'
}
}
ΠΠΎΠ±Π°Π²ΠΈΠ»ΡΡ getter usesLitter
Π² ΠΊΠ»Π°ΡΡΠ΅ Cat
, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΠΎΠ΅ Π² _usesLitter
.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ Dog
:
class Dog extends Animal {
constructor(name) {
super(name);
}
}
ΠΠ°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Dog
ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ ΠΆΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, getters, setters, ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΡΠΎ ΠΈ ΠΊΠ»Π°ΡΡ Dog
, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΡΠ΄Π΅Π»Π°Π½ Π±Π΅Π· Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅.
ΠΠ½ΠΎΠ³Π΄Π° Π½ΡΠΆΠ½Ρ ΠΊΠ»Π°ΡΡΡ, ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π½ΠΎ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΡΡΠΌΠΎ ΠΈΠ· ΠΊΠ»Π°ΡΡΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ»Π°ΡΡ Date
β ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Date
ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π»ΡΠ±ΡΡ Π΄Π°ΡΡ, ΠΈ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ (static) ΠΌΠ΅ΡΠΎΠ΄, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Date.now()
, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΡΡ Π΄Π°ΡΡ ΠΏΡΡΠΌΠΎ ΠΈΠ· ΠΊΠ»Π°ΡΡΠ°. ΠΠ΅ΡΠΎΠ΄ .now()
ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΡΠΌΠΎ ΠΈΠ· ΠΊΠ»Π°ΡΡΠ°, Π½ΠΎ Π½Π΅ ΠΈΠ· Π΅Π³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ static
, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ generateName
Π² ΠΊΠ»Π°ΡΡΠ΅ Animal
, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΠΈΠΌΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅:
class Animal {
constructor(name) {
this._name = name;
this._behavior = 0;
}
static generateName() {
const names = ['Angel', 'Spike', 'Buffy', 'Willow', 'Tara'];
const randomNumber = Math.floor(Math.random()*5);
return names[randomNumber];
}
}
ΠΠ·-Π·Π° ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° static
, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ .generateName()
Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΠΊΠ»Π°ΡΡΡ Animal
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
console.log(Animal.generateName()); // returns a name
ΠΠ΅Π»ΡΠ·Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ .generateName()
ΠΈΠ· ΡΠΊΠ·Π΅ΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° Animal
ΠΈΠ»ΠΈ ΡΠΊΠ·Π΅ΠΏΠ»ΡΡΠΎΠ² Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠ²:
const tyson = new Animal('Tyson');
tyson.generateName(); // TypeError
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π²Π΅Π±-ΡΠ°ΠΉΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· HTML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. ΠΡΠ°ΡΠ·Π΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π²Π΅Π±-ΡΠ°ΠΉΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ HTML ΠΈ CSS ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΡΠΈΠ»ΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅.
ΠΠΎΠΌΠΈΠΌΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° (parsing) ΡΡΠΈΠ»Π΅ΠΉ ΠΈ ΡΡΡΡΠΊΡΡΡΡ HTML ΠΈ CSS, Π±ΡΠ°ΡΠ·Π΅Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° (Document Object Model). ΠΡΠ° ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ JavaScript Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π²Π΅Π±-ΡΠ°ΠΉΡΠ° Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΠ±ΡΠ΅ΠΊΡ **document**
ΠΠ±ΡΠ΅ΠΊΡ document
ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ² (properties) ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² (methods), ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΡΠΎΠ².
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ DOM ΠΈ HTML-ΠΊΠΎΠ΄ΠΎΠΌ ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ DOM ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ HTML:
Π‘Π΅Π»Π΅ΠΊΡΠΎΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² DOM ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΠ·Π»Π°ΠΌΠΈ (nodes), ΠΈ ΡΠ·Π»Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠΌ, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ ΠΈΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
ΠΠ΅ΡΠ΅Ρ | Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΎΠ² | ΠΠ΅ΡΠΎΠ΄ |
---|---|---|
ID | #demo | getElementById() |
Class | .demo | getElementsByClassName() |
Tag | demo | getElementsByTagName() |
ΠΠ΅ΡΠ²ΡΠΉ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ | querySelector() | |
ΠΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ | querySelectorAll() |