哈,很多时候会遇到这种情况

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指向问题了

最后修改:2023 年 02 月 05 日
如果觉得我的文章对你有用,请随意赞赏