Skip to content

Commit 3f8156d

Browse files
committed
fixes
1 parent ce9ea46 commit 3f8156d

File tree

3 files changed

+18
-22
lines changed

3 files changed

+18
-22
lines changed

1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,18 @@ str.test = 5; // (*)
99
alert(str.test);
1010
```
1111

12-
Здесь может быть два результата:
13-
1. `undefined`
14-
2. Ошибка
12+
В зависимости от того, используете ли вы cтрогий режим (`use strict`) или нет, результат может быть:
13+
1. `undefined` (без strict)
14+
2. Ошибка (strict mode)
1515

1616
Почему? Давайте посмотрим что происходит в строке кода, отмеченной `(*)`:
1717

1818
1. В момент обращения к свойству `str` создается "объект-обертка".
19-
2. Операция со свойством выполняется на объекте. Таким образом, объект получает свойство `test`.
20-
3. Операция заканчивается и "объект-обертка" удаляется.
19+
2. В cтрогом режиме, попытка изменения этого объекта выдает ошибку.
20+
3. В стандартном режиме, операция продолжается, объект получает свойство `test`, но после этого "объект-обертка" удаляется.
2121

22-
Выходит, на последней линии `str` больше не имеет свойства `test`. При каждой объектной операции со строкой создается новый "объект-обертка".
23-
24-
Некоторые браузеры могут решить еще более ограничить возможности пользователя и запретить присваивание свойств примитивным типам. Поэтому, на практике мы можем встречать ошибки на линии `(*)`. Хотя, это далековато от правил языка.
22+
Выходит, в стандартном режиме на последней линии `str` больше не имеет свойства `test`.
2523

2624
**Данный пример наглядно показывает, что примитивы не являются объектами.**
2725

28-
Они просто не могут хранить данные.
29-
30-
Все операции со свойствами/методами выполняются с помощью временных объектов.
26+
Они не могут хранить дополнительные данные.

1-js/05-data-types/01-primitives-methods/1-string-new-property/task.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ importance: 5
22

33
---
44

5-
# Могу ли я добавить свойство Строки?
5+
# Можно ли добавить свойство строке?
66

77

88
Взгляните на следующий код:

1-js/05-data-types/01-primitives-methods/article.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
JavaScript позволяет нам работать с примитивными типами данных (далее: примитивы) - строки, числа, и т.д., так, как если бы они были объектами.
44

5-
Также примитивы имеют методы объектов. Их мы изучим позже, но сначала мы разберем, как это все работает, потому что, конечно, примитивы - не объекты (и здесь мы разберем это поподробнее).
5+
Они даже предоставляют методы. Мы изучим их позже, а сначала разберем, как это все работает, потому что, конечно, примитивы - не объекты.
66

77
Давайте взглянем на ключевые различия между примитивами и объектами.
88

@@ -14,9 +14,9 @@ JavaScript позволяет нам работать с примитивным
1414
Объект
1515

1616
- Может хранить множество значений как свойства.
17-
- Объявляется при помощи фигурных скобок `{}`, например: `{name: "Рома", age: 30}`. В JavaScript есть и другие виды объектов; например, функции тоже являются объектами.
17+
- Объявляется при помощи фигурных скобок `{}`, например: `{name: "Рома", age: 30}`. В JavaScript есть и другие виды объектов: например, функции тоже являются объектами.
1818

19-
Одна из лучших особенностей объектов это то, что мы можем хранить метод как одно из свойств объекта.
19+
Одна из лучших особенностей объектов это то, что мы можем хранить функцию как одно из свойств объекта.
2020

2121
```js run
2222
let roma = {
@@ -41,16 +41,16 @@ roma.sayHi(); // Привет, дружище!
4141

4242
Вот парадокс, с которым столкнулся создатель JavaScript:
4343

44-
- Есть много всего, что хотелось бы сделать с примитивами, такими как строка или число. Было бы замечательно, если бы мы могли обращаться с ними так же, как и с методами.
44+
- Есть много всего, что хотелось бы сделать с примитивами, такими как строка или число. Было бы замечательно, если бы мы могли работать с ними через вызовы методов.
4545
- Примитивы должны быть как можно легкими и быстрыми.
4646

4747
Вот решение, хотя выглядит оно немного неуклюже:
4848

4949
1. Примитивы остаются примитивами. Одно значение, как и хотелось.
5050
2. Язык позволяет иметь доступ к методам и свойствам строк, чисел, булевых значений и символов.
51-
3. При этом, создается специальный "объект-обертка", который предоставляет дополнительную функциональность, а после, удаляется.
51+
3. Чтобы это работало, создается специальный "объект-обертка", который предоставляет дополнительную функциональность, а после удаляется.
5252

53-
Каждый примитив имеет свой собственный "объект-обертку", которые называются: `String`, `Number`, `Boolean` и `Symbol`. Таким образом,они имеют разный набор методов.
53+
Каждый примитив имеет свой собственный "объект-обертку", которые называются: `String`, `Number`, `Boolean` и `Symbol`. Таким образом, они имеют разный набор методов.
5454

5555
К примеру, существует метод [str.toUpperCase()](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase), который возвращает cтроку в верхнем регистре.
5656

@@ -62,7 +62,7 @@ let str = "Привет";
6262
alert( str.toUpperCase() ); // ПРИВЕТ
6363
```
6464

65-
Легко, правда? Вот, что на самом деле происходит в `str.toUpperCase()`:
65+
Очень просто, не правда ли? Вот, что на самом деле происходит в `str.toUpperCase()`:
6666

6767
1. Строка `str` - примитив. В момент обращения к его свойству, создается специальный объект, который знает значение строки и имеет такие полезные методы, как `toUpperCase()`.
6868
2. Этот метод запускается и возвращает новую строку (показывается в `alert`).
@@ -91,12 +91,12 @@ alert( n.toFixed(2) ); // 1.23
9191
Например:
9292

9393
```js run
94-
alert( typeof 1 ); // "число"
94+
alert( typeof 0 ); // "число"
9595

96-
alert( typeof new Number(1) ); // "объект"!
96+
alert( typeof new Number(0) ); // "объект"!
9797
```
9898

99-
И так как `zero` - это объект, модальное окно выведется на экран.
99+
Объекты в if всегда дают true, так что в примере ниже будет показан alert:
100100

101101
```js run
102102
let zero = new Number(0);

0 commit comments

Comments
 (0)