哈,很多时候会遇到这种情况
example.js
export default () => {
// ...
}
main.vue
import Example from "./example.js";
export default {
name: "PageMain",
data(){
return {
Hello: "World"
}
},
mounted(){
Example();
}
}
如果这个时候,我想在example.js
中调用this.$data.Hello
,可能大部分情况下我是这么写的:
example.js
export default vue => {
console.log(vue.$data.Hello)
}
main.vue
import Example from "./example.js";
export default {
name: "PageMain",
data(){
return {
Hello: "World"
}
},
mounted(){
Example(new Proxy(this, {}));
}
}
这样写好麻烦,而且每次都需要传入参数。
所以我发现了一个很骚气的写法:
example.js
export default function(){
console.log(this.$data.Hello)
}
main.vue
import Example from "./example.js";
export default {
name: "PageMain",
data(){
return {
Hello: "World"
}
},
mounted(){
Object.assign(this, { func: Example }).func();
}
}
这就是JSON中function函数的this指向问题了