Skip to content

Commit 37092f5

Browse files
authored
Merge pull request #180 from otmon76/1.8.4
Prototype methods, objects without __proto__
2 parents 80a19e0 + 093e29f commit 37092f5

File tree

5 files changed

+150
-151
lines changed

5 files changed

+150
-151
lines changed
Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11

2-
The method can take all enumerable keys using `Object.keys` and output their list.
2+
Metoda může vzít všechny enumerovatelné klíče pomocí `Object.keys` a vydat jejich seznam.
33

4-
To make `toString` non-enumerable, let's define it using a property descriptor. The syntax of `Object.create` allows us to provide an object with property descriptors as the second argument.
4+
Abychom učinili `toString` neenumerovatelnou, definujme ji pomocí deskriptoru vlastnosti. Syntaxe `Object.create` nám umožní jako druhý argument poskytnout objekt s deskriptory vlastností.
55

66
```js run
77
*!*
8-
let dictionary = Object.create(null, {
9-
toString: { // define toString property
10-
value() { // the value is a function
8+
let slovník = Object.create(null, {
9+
toString: { // definujeme vlastnost toString
10+
value() { // její hodnotou je funkce
1111
return Object.keys(this).join();
1212
}
1313
}
1414
});
1515
*/!*
1616

17-
dictionary.apple = "Apple";
18-
dictionary.__proto__ = "test";
17+
slovník.jablko = "Jablko";
18+
slovník.__proto__ = "test";
1919

20-
// apple and __proto__ is in the loop
21-
for(let key in dictionary) {
22-
alert(key); // "apple", then "__proto__"
20+
// v cyklu jsou jablko a __proto__
21+
for(let klíč in slovník) {
22+
alert(klíč); // "jablko", pak "__proto__"
2323
}
2424

25-
// comma-separated list of properties by toString
26-
alert(dictionary); // "apple,__proto__"
25+
// seznam vlastností oddělených čárkou, vydaný metodou toString
26+
alert(slovník); // "jablko,__proto__"
2727
```
2828

29-
When we create a property using a descriptor, its flags are `false` by default. So in the code above, `dictionary.toString` is non-enumerable.
29+
Když vytvoříme vlastnost použitím deskriptoru, její přepínače jsou standardně `false`. V uvedeném kódu je tedy `slovník.toString` neenumerovatelná.
3030

31-
See the chapter [](info:property-descriptors) for review.
31+
Pro přehled nahlédněte do kapitoly [](info:property-descriptors).

1-js/08-prototypes/04-prototype-methods/2-dictionary-tostring/task.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,30 @@ importance: 5
22

33
---
44

5-
# Add toString to the dictionary
5+
# Přidejte toString do slovníku
66

7-
There's an object `dictionary`, created as `Object.create(null)`, to store any `key/value` pairs.
7+
Máme objekt `slovník` vytvořený použitím `Object.create(null)`, do něhož ukládáme libovolné dvojice `klíč/hodnota`.
88

9-
Add method `dictionary.toString()` into it, that should return a comma-delimited list of keys. Your `toString` should not show up in `for..in` over the object.
9+
Přidejte do něj metodu `slovník.toString()`, která by měla vracet seznam klíčů oddělených čárkou. Vaše metoda `toString` by se neměla ukazovat v cyklu `for..in` nad objektem.
1010

11-
Here's how it should work:
11+
Takto by to mělo fungovat:
1212

1313
```js
14-
let dictionary = Object.create(null);
14+
let slovník = Object.create(null);
1515

1616
*!*
17-
// your code to add dictionary.toString method
17+
// váš kód přidávající metodu slovník.toString
1818
*/!*
1919

20-
// add some data
21-
dictionary.apple = "Apple";
22-
dictionary.__proto__ = "test"; // __proto__ is a regular property key here
20+
// přidáme nějaká data
21+
slovník.jablko = "Jablko";
22+
slovník.__proto__ = "test"; // __proto__ je zde klíč obvyklé vlastnosti
2323

24-
// only apple and __proto__ are in the loop
25-
for(let key in dictionary) {
26-
alert(key); // "apple", then "__proto__"
24+
// v cyklu jsou jen jablko a __proto__
25+
for(let klíč in slovník) {
26+
alert(klíč); // "jablko", pak "__proto__"
2727
}
2828

29-
// your toString in action
30-
alert(dictionary); // "apple,__proto__"
29+
// váš toString v akci
30+
alert(slovník); // "jablko,__proto__"
3131
```
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11

2-
The first call has `this == rabbit`, the other ones have `this` equal to `Rabbit.prototype`, because it's actually the object before the dot.
2+
První volání má `this == králík`, v ostatních je `this` rovno `Králík.prototype`, protože je to ve skutečnosti objekt před tečkou.
33

4-
So only the first call shows `Rabbit`, other ones show `undefined`:
4+
Jedině první volání tedy zobrazí `Králík`, ostatní zobrazí `undefined`:
55

66
```js run
7-
function Rabbit(name) {
8-
this.name = name;
7+
function Králík(jméno) {
8+
this.jméno = jméno;
99
}
10-
Rabbit.prototype.sayHi = function() {
11-
alert( this.name );
10+
Králík.prototype.řekniAhoj = function() {
11+
alert( this.jméno );
1212
}
1313

14-
let rabbit = new Rabbit("Rabbit");
14+
let králík = new Králík("Králík");
1515

16-
rabbit.sayHi(); // Rabbit
17-
Rabbit.prototype.sayHi(); // undefined
18-
Object.getPrototypeOf(rabbit).sayHi(); // undefined
19-
rabbit.__proto__.sayHi(); // undefined
16+
králík.řekniAhoj(); // Králík
17+
Králík.prototype.řekniAhoj(); // undefined
18+
Object.getPrototypeOf(králík).řekniAhoj(); // undefined
19+
králík.__proto__.řekniAhoj(); // undefined
2020
```

1-js/08-prototypes/04-prototype-methods/3-compare-calls/task.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,26 @@ importance: 5
22

33
---
44

5-
# The difference between calls
5+
# Rozdíl mezi voláními
66

7-
Let's create a new `rabbit` object:
7+
Vytvořme nový objekt `králík`:
88

99
```js
10-
function Rabbit(name) {
11-
this.name = name;
10+
function Králík(jméno) {
11+
this.jméno = jméno;
1212
}
13-
Rabbit.prototype.sayHi = function() {
14-
alert(this.name);
13+
Králík.prototype.řekniAhoj = function() {
14+
alert(this.jméno);
1515
};
1616

17-
let rabbit = new Rabbit("Rabbit");
17+
let králík = new Králík("Králík");
1818
```
1919

20-
These calls do the same thing or not?
20+
Učiní všechna tato volání totéž, nebo ne?
2121

2222
```js
23-
rabbit.sayHi();
24-
Rabbit.prototype.sayHi();
25-
Object.getPrototypeOf(rabbit).sayHi();
26-
rabbit.__proto__.sayHi();
23+
králík.řekniAhoj();
24+
Králík.prototype.řekniAhoj();
25+
Object.getPrototypeOf(králík).řekniAhoj();
26+
králík.__proto__.řekniAhoj();
2727
```

0 commit comments

Comments
 (0)