【发布时间】:2017-04-19 20:46:05
【问题描述】:
我已经开始从零开始学习 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('')
}
}
})
..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();
这就是我在 vanilla javascript 中访问属性的方式。有人可以让我了解幕后发生的事情吗?
【问题讨论】:
-
this并不总是在词法上绑定。它也可以与call、apply或bind绑定,这很可能是VueJS正在做的事情。 -
你传递给
new Vue()的对象和它返回的对象不是同一个对象。您将它用于创建 Vue 的对象传递给它。该过程的一部分是使数据属性、方法、计算对象等可用作创建对象的属性。 -
基本上它具有使
this.$data.property可访问为this.property的代理
标签: javascript vue.js vuejs2