Thanks, @mkay581 for your thoughtful response.
Yes, I guess I didn’t have my nomenclature quite right – I never really considered Object.assign and “…” to be doing a merge, due to the aggressive (but faster?) overwriting, but it does appear it is often called “merge”, so I will be sure to use “deep merge” in order to keep that clear in the future.
I see now that my use of the word “solves” also gives the wrong impression, like being able to set styles and datasets can’t be done without difficulty. But what I’m looking for here is nice syntactic sugar to easily set a bunch of properties of a DOM element, passing in one object with everything in one step. If you have an elegant way of doing this, without defining a function, feel free to provide your preferred syntax, and maybe that would render this proposal as not being useful.
I agree, as I mentioned before, that deepmerge functions are quite small (I note that npm deepmerge and JQueries ‘extend’ might not yet support symbols, which is a must).
I agree that the npm download count doesn’t guarantee that it is actually used that much, but I’m not sure how else to tell how often this functionality is used.
I should note (just realized) that lodash also has a deep extend function.