Edit in JSFiddle

var data = {
  title: 'The VueJS Instance',
  showParagraph: false
}
var vm1 = new Vue({
  data: data,
  methods: {
    show: function() {
      this.showParagraph = true;
      this.updateTitle('The VueJS Instance (Updated)');
      this.$refs.myButton.innerText = 'Test';
    },
    updateTitle: function(title) {
      this.title = title;
    }
  },
  computed: {
    lowercaseTitle: function() {
      return this.title.toLowerCase();
    }
  },
  watch: {
    title: function(value) {
      alert('Title changed, new value: ' + value);
    }
  }
});

vm1.$mount('#app');

console.log(vm1.$data === data);
vm1.$refs.heading.innerText = 'Something else';

<script src="https://unpkg.com/vue/dist/vue.js"></script>

<div id="app">
  <h1 ref="heading">{{ title }}</h1>
  <h2>
    {{ lowercaseTitle }}
  </h2>
  <button v-on:click="show" ref="myButton">Show Paragraph</button>
  <p v-if="showParagraph">This is not always visible</p>
</div>