Свойство 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.
- Объединить массивы (объединить массивы)
- Копирование массивов
- Вызов функций без применения
- Разрушение массивов
- Аргументы функции как параметры отдыха
- Использование математических функций
- Объединение двух объектов
- Разделить строку на отдельные символы
[...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' }