答:为了方便组件复用,复用的多个组件共享模板中除了data以外的所有属性,唯独data是各组件独有一份。组件如此,而Vue实例是根组件,亦是如此。
class Vue {
constructor(obj) {
this.el = obj.el;
this.data = (typeof obj.data === "function" ? obj.data() : obj.data);
}
}
//data : {}
const vue_data_object = {
el: "element",
data: {
message: "Hello"
}
};
let app_data_object_1 = new Vue(vue_data_object);
let app_data_object_2 = new Vue(vue_data_object);
app_data_object_1.data.message = "World";
console.log(app_data_object_2.data.message);//World
//data : function(){}
const vue_data_function = {
el: "element",
data() {
return {
message: "Hello"
}
}
};
let app_data_function_1 = new Vue(vue_data_function);
let app_data_function_2 = new Vue(vue_data_function);
app_data_function_1.data.message = "World";
console.log(app_data_function_2.data.message);//Hello