title: Vue __ob__ property is in Object and creating json parsing error
body: <p>I'm having a problem in my Nuxt/Vue/Vuex app in where the <code>__ob__</code> observable property is actually present in my object rather than being silent. Ie</p>
  
  <pre><code>{lastname: "sfgsfdgsdfgs", __ob__: Observer}
  </code></pre>
  
  <p>screenshot below:  </p>
  
  <p><a href="https://i.stack.imgur.com/c3yxL.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/c3yxL.png" alt="enter image description here"></a></p>
  
  <p>The length of my <code>Object.keys</code> is 2 and as such it is being passed into my API calls, causing a JSON parsing error.</p>
  
  <p>What i'm doing is on submit, comparing if any of an object's fields have been updated, and if so create an object with the updated field(s) and value(s). It's for executing a PATCH request to my API.</p>
  
  <p>Some of this code was written by a previous dev. The form fields are bound directly to state.</p>
  
  <p>There is a <code>contact</code> object, that is a computed property,</p>
  
  <pre><code>computed: {
      ...mapState({
          contact(state) {
              return state.contact;
          },
  </code></pre>
  
  <p>I have an <code>origContact</code> property in my <code>data()</code> property,</p>
  
  <pre><code>data() {
      return {
        origContact: null,
  </code></pre>
  
  <p>that is being set on mount, as a deep clone of the computed property <code>contact</code>,</p>
  
  <pre><code>mounted() {
        this.origContact = clonedeep(this.contact)
  </code></pre>
  
  <p>this is using the <code>clonedeep</code> library from loadash
  <code>import clonedeep from 'lodash.clonedeep'</code> </p>
  
  <p>and on submit i'm running the below,</p>
  
  <pre><code>getPatchFields(newObj, oldObj) {
          let patchObj = {}
          let properties = Object.getOwnPropertyNames(newObj)
  
          for (let i = 0; i &lt; properties.length; i++) {
              let propName = properties[i]
  
              if (newObj[propName] !== oldObj[propName]) {
                  patchObj[propName] = newObj[propName]
              }
          }
          return patchObj
      },
      async submitHandler() {
          try {
              let changedContactFields = this.getPatchFields(this.contact, this.origContact)
              console.log('TCL: submitHandler -&gt; changedContactFields', changedContactFields)
  </code></pre>
  
  <p>The <code>changedContactFields</code> object is where the <code>__ob__</code> property show up as a hard property.</p>
  
  <p>Has anyone experienced this problem before?<br>
  Sure I could create a new object omitting the <code>__ob__</code> property, but it bugs me that it's there.</p>
  
  <p>Any help would be greatly appreciated!</p>