Skip to content

Commit 8b64b90

Browse files
committed
fixes псевдомассив
1 parent 340e161 commit 8b64b90

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

  • 1-js/06-advanced-functions/09-call-apply-decorators

1-js/06-advanced-functions/09-call-apply-decorators/article.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ say.apply(user, messageData); // [10:00] John: Hello (this=user)
283283
*/!*
284284
```
285285

286-
Единственная разница в синтаксисе между `call` и `apply` состоит в том, что `call` ожидает список аргументов, в то время как `apply` принимает объект-псевдомассив.
286+
Единственная разница в синтаксисе между `call` и `apply` состоит в том, что `call` ожидает список аргументов, в то время как `apply` принимает псевдомассив.
287287
Мы уже знаем оператор расширения `...` из главы <info: rest-parameters-spread-operator>, который может передавать массив (или любой перебираемый объект) в виде списка аргументов. Поэтому, если мы используем его с `call`, мы можем достичь почти того же, что и `apply`.
288288
Эти два вызова почти эквивалентны:
289289

@@ -299,9 +299,9 @@ func.apply(context, args); // тот же эффект
299299
Если мы посмотрим более внимательно, то между такими использованиями `call` и` apply` есть небольшая разница.
300300

301301
- Оператор расширения `...` позволяет передавать *перебираемый* объект `args` в виде списка в `call`.
302-
- В свою очередь `Apply` принимает только *объект-псевдомассив* `args`.
302+
- В свою очередь `Apply` принимает только *псевдомассив* `args`.
303303

304-
Итак, эти вызовы дополняют друг друга. Там, где мы ожидаем итеративность, работает `call`, где мы ожидаем объект-псевдомассив, работает `apply`.
304+
Итак, эти вызовы дополняют друг друга. Там, где мы ожидаем итеративность, работает `call`, где мы ожидаем псевдомассив, работает `apply`.
305305

306306
И если `args` является перебираемый и похожим на реальный массив, то технически мы могли бы использовать любой из них, но `apply`, вероятно, будет быстрее, потому что это одна операция. Большинство движков JavaScript внутренне оптимизируют его лучше, чем пара `call + spread`.
307307

@@ -384,7 +384,7 @@ function hash(args) {
384384
}
385385
```
386386

387-
...К сожалению, это не сработает. Потому что мы вызываем `hash(arguments)`а объект `arguments` является перебираемым и объектом-псевдомассивом, но не реальным массивом.
387+
...К сожалению, это не сработает. Потому что мы вызываем `hash(arguments)`, а объект `arguments` является перебираемым и псевдомассивом, но не реальным массивом.
388388

389389
Таким образом, вызов `join` для него потерпит неудачу, что мы и можем видеть ниже:
390390

@@ -440,7 +440,7 @@ hash(1, 2);
440440
Для реализации `cachingDecorator` мы изучили методы:
441441

442442
- [func.call(context, arg1, arg2...)](mdn:js/Function/call) -- вызывает `func` с данным контекстом и аргументами.
443-
- [func.apply(context, args)](mdn:js/Function/apply) -- вызывает `func` передавая `context` как `this` и объект-псевдомассив `args` как список аргументов.
443+
- [func.apply(context, args)](mdn:js/Function/apply) -- вызывает `func` передавая `context` как `this` и псевдомассив `args` как список аргументов.
444444

445445
В основном *переадресация вызова* выполняется с помощью `apply`:
446446

0 commit comments

Comments
 (0)