Я начал изучать 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();
Вот как я получил бы доступ к свойству в ванильном javascript. Может кто-нибудь, пожалуйста, помогите мне понять, что происходит за кулисами?
this
не всегда связано лексически. Он также может быть связан сcall
,apply
илиbind
, что, вероятно, и делает VueJS. - person 4castle   schedule 19.04.2017new Vue()
, и объект, который он возвращает, не являются одним и тем же объектом. Вы передаете ему объект, который он использует для создания файла Vue. Частью этого процесса является предоставление свойств данных, методов, вычислений и т. д. в качестве свойств созданного объекта. - person Bert   schedule 19.04.2017this.$data.property
доступным какthis.property
- person Belmin Bedak   schedule 20.04.2017