(1)、不是在vue对象中定义的函数和变量,不能使用this调用。
如普通引用模块中定义的变量和函数。还有一致特殊的函数定义,例如下面这种在页面中定义的函数,也是不属于vue对象的函数:
define(['users/templates/【GROUP】/【PAGE】/data', 'publib/mixin/mainMixins'], function (mixin, mainMixin) {
var myfunc1 = function myfunc1() {
console.log("这是一个普通函数,不属于vue对象");
}
return {
mixins: [mainMixin, mixin],
created: function created() {
this.FetchData();
},
methods: {
FetchData: function FetchData() {
myfunc1(); //正确的用法
this.myfunc1(); //不正确的用法
},
},
};
});
注意看第2~4行定义的myfunc1函数是在关键字return的前面的,也就是说不属于返回的vue对象。这种函数不能使用this调用,像第13行那样使用就会出错。但是可以像第12行一样直接通过函数名称调用。这种函数也不能被其它模块通过混入引用和普通引用使用,只能在页面内被调用。
这种函数如果需要调用vue对象的数据,可以把this作为参数传入,如:
define(['users/templates/【GROUP】/【PAGE】/data', 'publib/mixin/mainMixins'], function (mixin, mainMixin) {
var myfunc1 = function myfunc1(_self) {
console.log(_self.PublicData);
}
return {
mixins: [mainMixin, mixin],
created: function created() {
this.FetchData();
},
methods: {
FetchData: function FetchData() {
myfunc1(this);
},
},
};
});
以上这段代码并没有 var _self=this 那么怎么理解 如果需要调用vue对象的数据,可以把this作为参数传入 这句话的意思? this 代表的什么? _self又是何时被赋的值?