97 votes

Définir la valeur par défaut des attributs des objets Javascript

Existe-t-il un moyen de définir l'attribut par défaut d'un objet Javascript de telle sorte que :

let emptyObj = {};
// do some magic
emptyObj.nonExistingAttribute // => defaultValue

0 votes

TOUT attribut non existant ou simplement un nom d'attribut CONNU ?

1 votes

let o = new Proxy({}, { get: (o, k) => k in o ? o[k] : 'some default value' }; console.log(o.key1)

11voto

user2711603 Points 36

La façon dont je réalise ceci est avec le object.assign fonction

const defaultProperties = { 'foo': 'bar', 'bar': 'foo' };
const overwriteProperties = { 'foo': 'foo' };
const newObj = Object.assign({}, defaultProperties, overwriteProperties);
console.log(defaultProperties);  // {"foo": "bar", "bar": "foo"}
console.log(overwriteProperties);  // { "foo": "foo" };
console.log(newObj);  // { "foo": "foo", "bar": "foo" }

7voto

gianlucaparadise Points 1194

Je pense que l'approche la plus simple consiste à utiliser Object.assign .

Si vous avez cette classe :

class MyHelper {
    constructor(options) {
        this.options = Object.assign({
            name: "John",
            surname: "Doe",
            birthDate: "1980-08-08"
        }, options);
    }
}

Vous pouvez l'utiliser comme ceci :

let helper = new MyHelper({ name: "Mark" });
console.log(helper.options.surname); // this will output "Doe"

Documentation (avec polyfill) : https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

7voto

Gil Baggio Points 2137

La plus simple de toutes les solutions :

dict = {'first': 1,
        'second': 2,
        'third': 3}

Maintenant,

dict['last'] || 'Excluded'

retournera "Exclu", qui est la valeur par défaut.

6voto

user1386350 Points 77

Ou vous pouvez essayer ceci

dict = {
 'somekey': 'somevalue'
};

val = dict['anotherkey'] || 'anotherval';

6voto

joaquin keller Points 99

Cela me semble être la manière la plus simple et la plus lisible de le faire :

let options = {name:"James"}
const default_options = {name:"John", surname:"Doe"}

options = Object.assign({}, default_options, options)

Référence Object.assign()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X