This answer quotes ChatGPT
ob is an attribute used by Vue internally to implement Vue's responsive system. When an object is converted to a responsive object by Vue, Vue will add the ob attribute to the object. You also add getter and setter methods for the object's properties so that you can listen for property changes and trigger view updates.
Theassignment should be done after the object has been converted to a reactive object by Vue. If you print the object before the assignment, you will find that there is no ob property in the object, because the object has not been converted to a reactive object by Vue. So, before assigning, you need to convert the object to a reactive object by calling the $set or $watch method on the Vue instance. For example:
this.$set(this, 'a', JSON.parse(JSON.stringify(this.a)));
or:
this.$watch(() => this.a, (newValue) => {
this.a = newValue;
}, { deep: true });
Doing so ensures that the assignment successfully modifies the properties of the object and triggers the view update.