Свойство Javascript с тремя точками (...)

У меня проблема с кодом, с которым я должен работать. Я нашел синтаксис, с которым я не знаком, и у меня проблемы с поиском документации:

export const Something = class Something {
    constructor(someObject = {}) {
        this.someObject = {...Something.someObjectDefaultAsStaticMethod,...someThing};
    };
// The rest of the class
};

У меня проблемы с пониманием того, что делают три точки (...) перед параметром. И "точки в параметре javascript" - это плохой поисковый термин. Может кто-нибудь помочь мне, может быть, сказать мне, как на самом деле называется этот синтаксис, или просто связать меня с документацией?

7 ответов

Решение

Это не ES6, но был добавлен только в ECMAScript 2018.

Он называется "Свойства объекта / Распространение" и является частью синтаксиса распространения.

...(три точки в Javascript) называется синтаксисом распространения или оператором распространения. Это позволяет развернуть итерацию, такую ​​как выражение массива или строку, или выражение объекта, где бы оно ни находилось.

Я хочу перечислить наиболее часто используемые практические варианты использования синтаксиса распространения (оператора распространения). Следующее было объяснено с примерами в этом ответе stackru.

  1. Объединить массивы (объединить массивы)
  2. Копирование массивов
  3. Вызов функций без применения
  4. Разрушение массивов
  5. Аргументы функции как параметры отдыха
  6. Использование математических функций
  7. Объединение двух объектов
  8. Разделить строку на отдельные символы

[...something] является оператором распространения По сути, это позволяет расширить массив или строку. Вы увидите, что он часто используется в React, но имеет много других вариантов использования.

MDN имеет отличную документацию по оператору распространения: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator

Вы можете использовать "..." в объекте. В приведенном ниже примере «…данные» получают «имя: «Джон», возраст: 24» :

Вот результат:

      [
  { id: 0, name: "John", age: 24 },
  { id: 1, name: 'Marry', age: 18 },
  { id: 2, name: 'Tom', age: 15 }
]

Мне все равно, что ... точки в JS, мне нужно знать, как исправить мою ошибку (синтаксическая ошибка: неожиданный токен), какую часть вы, ребята, не понимаете, какую версию nodejs нужно использовать прямо сейчас на nodejs 12,14 выйдет из строя с ошибкой !! Everbody в сообществе nodejs теперь () мысленно мастурбирует с новыми функциями, но никто не говорит, как исправить эту ошибку или переписать код

Не удалось скомпилировать.

36 | mount () {

37 | const options = {... this.computedOptions, el: this.$refs.toastuiEditor};

Нашел какое-то решение https://dev.to/brianmcoates/alternative-to-the-spread-operator-10be

Прошлое решение JQuery

       this.settings = $.extend({
    showCancel: true,
    showConfirm: true,
    Message: "",
    extraClass: ""
  }, options || {} );

Это какая-то ошибка Babel

Вам не хватает преобразования распределения остатка объекта: https://babeljs.io/docs/plugins/transform-object-rest-spread/

React JS Error "... rest" Синтаксическая ошибка: неожиданный токен

https://github.com/JeffreyWay/laravel-mix/issues/76

https://github.com/JeffreyWay/laravel-mix/issues/76#issuecomment-271920174__

Контекст: один из вариантов использования — «копировать», но вы должны позаботиться об этом конкретном поведении «по ссылке» при работе с подсвойствами.

Вывод: позаботьтесь о том, чтобы подсвойства передаются НЕ по значению, а по ссылке. Другими словами, в качестве копии "по значению" передаются только свойства первого уровня. См. пример:

Вам нужно будет использовать babel и плагин преобразования оставшихся объектов преобразования, чтобы скомпилировать этот JS следующего поколения.

var people = { name: 'Adam', name: 'John', name: 'Bruce'};
var morePeople = { ...people, name: 'Michael' };
console.log(morePeople); // logs  { name: 'Adam', name: 'John', name: 'Bruce', name: 'Michael' }
Другие вопросы по тегам