Why is projection readonly?
readonly attribute string projection;
Once established, the projection of the map is read-only.
Why is this readonly?
For JS frameworks that build the DOM through generic DOM APIs, requiring use of the Map constructor for non-default projection seems like a problem.
Why is this readonly?
Maybe it could be change-able, but if you simply change the projection of the map, unless you take some actions, every layer on the map would become disabled because we've specifically avoided asking that browsers be capable of on-the-fly reprojection (opens up a can of worms).
However, it's possible that some layers on the map that were disabled in the old projection could become not-disabled in the new projection (because they had been disable due to a mismatched projection, which is now a match to the map's new projection). This could be quite useful in some scenarios, I think, such as you sometimes see when using modern proprietary web map frameworks, which go from a planar map projection at higher zooms to a "3d" globe projection as you zoom out (done to avoid the problems of the projection system at small map scales).
For JS frameworks that build the DOM through generic DOM APIs, requiring use of the Map constructor for non-default projection seems like a problem.
I don't fully understand, but ok. I think you're saying you shouldn't force them to create a new map when they've already got one created.