Каков наилучший способ инициализации объекта со значениями по умолчанию, где значения не указаны в Ecmascript 6? - PullRequest
1 голос
/ 07 февраля 2020

Допустим, я хочу объявить объект bar и установить его значения равными значениям объекта foo, но я не уверен, будет ли foo иметь все необходимые свойства. Я также хочу сохранить ложные значения, такие как "" из foo, а не возвращаться к значениям по умолчанию. Например:

var foo = somefunc();
console.log(foo);
//{prop1: "", prop2: "works"}

var defaults = {prop1: "default1", prop2: "default2", prop3: "default3"}
/* some piece of code */
console.log(bar);
//should log: {prop1: "", prop2: "works", prop3: "default3"}

Что было бы лучше /* some piece of code */ использовать в Ecmascript 6 для инициализации с настройками по умолчанию, подобными этим?

Ответы [ 4 ]

3 голосов
/ 07 февраля 2020

Для этого вы можете элегантно использовать оператор спреда,

var foo = {prop1: "", prop2: "works"};
console.log(foo);

var defaults = {prop1: "default1", prop2: "default2", prop3: "default3"}
var bar = {...defaults, ...foo}
console.log(bar);
3 голосов
/ 07 февраля 2020

Это работает для вас?

var foo = {prop1: "", prop2: "works"};
var defaults = {prop1: "default1", prop2: "default2", prop3: "default3"}
var bar = Object.assign({},defaults,foo)
console.log(bar); //{prop1: "", prop2: "works", prop3: "default3"}
2 голосов
/ 07 февраля 2020
var new_object={ ...defaults, ...foo }
2 голосов
/ 07 февраля 2020

Это можно сделать, используя Object.assign с пустым объектом в качестве цели и defaults и foo в качестве источников, в указанном порядке.

let bar = Object.assign({}, defaults, foo);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...