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}