In the terms view, the API requests to save changed values are done in the labelview, descriptionview and aliasesview widgets. These, but only these three widgets should have a full implementation of isInitialValue that possibly creates Wikibase-DataModel-JavaScript objects and compares them. All other, higher level widgets should delegate an isInitialValue call to their sub-widgets.
This not only avoids duplicate code. It also avoids creating Wikibase-DataModel-JavaScript objects.
Same for the statements and sitelinks views.