@ince

Можно ли как-нибудь записать короче?

Можно ли как-нибудь записать короче?
this.configDb = {
      user: c.user,
      password: c.password,
      connectString: c.connectString,
    };
  • Вопрос задан
  • 146 просмотров
Решения вопроса 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Так скопирует только выбранные свойства:
this.configDb = (({ user, password, connectString }) => ({ user, password, connectString }))(c);

Источник
Тест
var c = {
      user: "User",
      password: "Password",
      connectString: "Connect String",
    };
var configDb = (({ user, password, connectString }) => ({ user, password, connectString }))(c);

console.log(configDb)
// Object { user: "User", password: "Password", connectString: "Connect String" }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Seasle
@Seasle Куратор тега JavaScript
Если судить по коду, то this.configDb = c;. Если это какой-то метод (функция), то можно сделать нечто подобное
class Some {
	constructor() {
		this.configDb = {
			user: null,
			password: null,
			connectString: null
		};
	}

	static required(name) {
		throw new Error(`Argument ${name} is required`);
	}


	setConfig({
		user = Some.required('user'),
		password = Some.required('password'),
		connectString = Some.required('connectString')
	}) {
		this.configDb = { user, password, connectString };
	}
}

const some = new Some();
some.setConfig({
	user: 'John',
	password: 'qwerty',
	connectString: 'example.com'
});
console.log(some); // { configDb: { user: 'John', password: 'qwerty', connectString: 'example.com' } }
some.setConfig({
	password: 'root'
}); // Error: Argument user is required


Код для примера. Самое важное находится в методе setConfig. Если просто setConfig({ user, password, connectString }). И какой бы объект не передали в функцию, она получит только эти 3 аргумента.
Есть хорошая статья из учебника по JS.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы