The simplicity and powerfulness of Vue.js originate from its reactive data binding system. It is designed to be intuitive, and it doesn't require your attention to keep the data and the view in sync.
Essentially, to archive this ubiquitous reactivity, internally, Vue.js implements a variant of the observer design pattern to collect dependencies of the data and notify watchers when data is changed. During the initialization of a Vue instance, Vue.js makes every property of the data object reactive by using the Object.defineProperty() method to create a getter and a setter function for accessing that property and updating its value respectively. When the render function updates the DOM, it invokes the getter functions of ...