ES16 offers a nice shorthand obj.someMethod?.()
to call someMethod if exists on calling object.
Beeing spoiled with this coding sugar, I would also like to assign a value to property if exists, something like obj?.someProp = 42
(which leads to invalid left-hand assignment).
I would like to do it with any object (mostly dataset of HTMLElements). Any idea how to shorten this?
if(obj?.hasOwnProperty("someProp")) obj.someProp = 42
CodePudding user response:
You can use the logical nullish assignment operator. It won't help you with obj
being undefined though:
if (obj) obj.someProp ??= 42;
CodePudding user response:
well, you can do something like:
obj && (obj.someProp = 42)
But this will not create the obj
for you..
However, even though its not asked, why not just simply destructure though?
obj = {...(obj || {}), someProp: 42}