Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Деструктурирующее присваивание (https://javascript.ru/forum/misc/84225-destrukturiruyushhee-prisvaivanie.html)

lgick 12.07.2022 23:42

Деструктурирующее присваивание
 
Подскажите, как можно сделать присваивание всех методов в объекте, чтоб не прописывать каждый персонально


рони 13.07.2022 02:08

lgick,
{...obj}

voraa 13.07.2022 07:19

Только методов или методов и свойств?

ksa 13.07.2022 09:19

lgick, сделай пример тестовый. Так будет понятнее что хочешь получить в итоге...

Alexandroppolus 13.07.2022 10:20

reducers: {
    setNamedValue(state, action) {
        state[action.payload.name] = action.payload.value;
    }
}

lgick 13.07.2022 10:35

Цитата:

Сообщение от ksa (Сообщение 546627)
lgick, сделай пример тестовый. Так будет понятнее что хочешь получить в итоге...

хочу использовать эти методы в других компонентах:
import {
  setTextBoxPosition,
  setTextBoxSize,
  setTextBoxColor,
  setButtonPosition,
...
} from '../../../redux/slice';


просто методов много и прописывать каждый долго

lgick 13.07.2022 10:36

Цитата:

Сообщение от voraa (Сообщение 546626)
Только методов или методов и свойств?

там только методы, но можно и свойств

ksa 13.07.2022 10:48

Цитата:

Сообщение от lgick
хочу использовать эти методы

Вместо перечисления методов удобнее взять весь объект
import act from '../../../redux/slice';
// далее применять
act.setTextBoxPosition()

Т.о. ничего "перечислять" не нужно...

lgick 13.07.2022 10:52

То есть хочу комбинировать деструктуризацию объекта и остаток объекта

Хочу получить такой результат:

let {...???} = {x:1, y: 2};

console.log(x) // 1
console.log(y) // 2


Возможно?

lgick 13.07.2022 10:53

Цитата:

Сообщение от ksa (Сообщение 546631)
Вместо перечисления методов удобнее взять весь объект
import act from '../../../redux/slice';
// далее применять
act.setTextBoxPosition()

Т.о. ничего "перечислять" не нужно...

да, так можно, но я хочу обращаться к свойству напрямую, а не через объект

voraa 13.07.2022 12:11

Цитата:

Сообщение от lgick
хочу использовать эти методы в других компонентах:

Если это твои компоненты - сделай классы и наследование.
Цитата:

Сообщение от lgick
да, так можно, но я хочу обращаться к свойству напрямую, а не через объект

import act from '../../../redux/slice';

const {setTextBoxPosition, setTextBoxSize} = act;

setTextBoxSize();


Не совсем понятно, что значит у вас "другие компоненты"
Если компонент - какой то объект, к которому вы хотите прицепить эти методы, то можно просто их наследовать через прототип.
Если вы хотите просто экспортировать часть этих методов вместе с методами другого компонента, то используйте реэкспорт - конструкцию
export from

lgick 13.07.2022 12:29

Цитата:

Сообщение от voraa (Сообщение 546634)
Если это твои компоненты - сделай классы и наследование.


import act from '../../../redux/slice';

const {setTextBoxPosition, setTextBoxSize} = act;

setTextBoxSize();


Не совсем понятно, что значит у вас "другие компоненты"
Если компонент - какой то объект, к которому вы хотите прицепить эти методы, то можно просто их наследовать через прототип.
Если вы хотите просто экспортировать часть этих методов вместе с методами другого компонента, то используйте реэкспорт - конструкцию
export from



а как получить такой результат:

let {...???} = {x:1, y: 2};

console.log(x) // 1
console.log(y) // 2


?

voraa 13.07.2022 12:32

Цитата:

Сообщение от lgick
а как получить такой результат:

let {x, y} = {x:1, y: 2};
console.log(x) // 1
console.log(y) // 2


let {x, y, ...t} = {x:1, y: 2, a:3, b:4};
console.log(x) // 1
console.log(y) // 2
console.log(t) // {a:3, b:4}

MallSerg 13.07.2022 16:42

ООП -> наследование.

Дизайн объектов на основе базовых классов прототипов. =)


Часовой пояс GMT +3, время: 19:21.