了解Vue中的'this'关键字

Tan*_*may 7 javascript vue.js vuejs2

我已经开始从头开始学习VueJS。我正在遵循他们的官方指南。但我被困在这里:https : //vuejs.org/v2/guide/#Handling-User-Input

在这个例子中...

var app5 = new Vue({
  el: '#app-5',
  data: {
    message: 'Hello Vue.js!'
  },
  methods: {
    reverseMessage: function () {
      this.message = this.message.split('').reverse().join('')
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

..如何message直接访问属性而不引用任何data对象?如果this关键字是指当前Vue的情况下,不应在message财产被这样访问:this.data.message

考虑以下示例:

({
  name: "John Doe",
  data: {
    message: "Hello World"
  },
  greet: function(){
    console.log("I am " + this.name);
    console.log("I have a message for you: " + this.data.message); //see here
  }
}).greet();
Run Code Online (Sandbox Code Playgroud)

这就是我本来可以使用Vanilla JavaScript访问属性的方式。有人可以让我了解幕后发生的事情吗?

gfo*_*301 6

阅读:选项/数据

从中我们得到“Vue 实例的数据对象。Vue 将递归地将其属性转换为 getter/setter 以使其“反应式”。这意味着data对象属性中的所有内容都直接应用于新的Vue. 这使得这些属性this可用作 getter 和 setter。

  • 如果您还包含有关“方法”选项的文档将会很有帮助,该选项当前为:“要混合到 Vue 实例中的方法”。您可以直接在 VM 实例上访问这些方法,或在指令表达式中使用它们。所有方法都会将其 this 上下文自动绑定到 Vue 实例。 (3认同)

Ker*_*mit 5

在Vue中,Vue实例使用Proxy代理数据和方法的属性