ES16+ ofrece una buena abreviatura obj.someMethod?.()
para llamar a someMethod si existe en el objeto de llamada.
Al estar mimado con este azúcar de codificación, también me gustaría asignar un valor a la propiedad si existe, algo como obj?.someProp = 42
(lo que conduce a una asignación no válida de la mano izquierda).
Me gustaría hacerlo con cualquier objeto (principalmente conjunto de datos de HTMLElements). ¿Alguna idea de cómo acortar esto?
if(obj?.hasOwnProperty("someProp")) obj.someProp = 42
Puede utilizar el operador de asignación nulo lógico . Sin embargo, no te ayudará si obj
no está definido:
if (obj) obj.someProp ??= 42;
bueno, puedes hacer algo como:
obj && (obj.someProp = 42)
Pero esto no creará el obj
para ti.
Sin embargo, aunque no se pregunta, ¿por qué no simplemente desestructurar?
obj = {...(obj || {}), someProp: 42}