recorrer objetos objeto metodos herencia funciones eliminar elemento ejemplos crear array agregar javascript properties object-literal

javascript - objetos - ¿Se pueden establecer múltiples propiedades dentro de un objeto literal con el mismo valor?



prototype javascript ejemplos (4)

Otra forma de hacer lo mismo es:

var v; var obj = { "a": (v = ''some value''), "b": v, "c": v };

Por ejemplo, ¿puedo hacer esto ?:

{ a: b: c: d: 1, e: 2, geh: function() { alert("Hi!") } }

EDITAR: ¿Hay alguna forma en que pueda evitar hacer esto ?:

{ a: 1, b: 1, c: 1, d: 1, e: 2, geh: function() { alert("Hi!") } }


Podrías probar esto. No es el azúcar sintáctico que está buscando (por ejemplo, {a,b,c:1, d:2} ), pero es otra forma de hacerlo, aunque todas estas respuestas son bastante buenas.

(object,fields,value)=>Object.assign(object||{}, ...fields.map(f=>({[f]:value}) ))

Explicación:

(object,fields,value)=>

Toma un objeto (o valor falsey si quieres un nuevo objeto, puedes reorganizar el orden de los argumentos)

Object.assign(object||{},

Devolverá un objeto basado en el object y mutará el objeto. Para desactivar esto, simplemente agregue un primer argumento literal de objeto como este Object.assign({}, object || {}, ...

...fields.map(f=>({[f]:value}) )

Se extenderá la matriz de campos asignados a objetos como una lista de argumentos adicionales a Object.assign . [''a'',''b''].map(f=>({[f]:value}) ) dará [{a:value}, {b:value}] f(...[{a:1},{b:1}]) es como f({a:1},{b:1}) . Object.assign hace el resto :)


Puede establecer una línea de igualdad entre varias propiedades:

var foo = {}; foo.a = foo.b = foo.c = "Hello";

O simplemente podría crear un método que haga la asignación masiva para usted:

var foo = { setValue: function( props, value ) { while ( props.length ) this[ props.pop() ] = value; } } foo.setValue( [ "a", "b", "c" ] , "Foo" );


También podría envolver un cierre si no desea múltiples vars locales. Esta sintaxis parece ser popular (pero fea):

var obj = (function() { var v=''some value''; return { a:v, b:v, c:v }; })();