vue2的data()this指向和vue3区别

今天在这里我探讨了3种情况:

1.脚手架创建的vue2,写法也是vue2

2.脚手架创建的vue3,但写法是vue2

3.脚手架创建的vue3,写法也是vue3

1.脚手架创建的vue2,写法也是vue2

<script>
export default {
    data(){
        return {
            d:this
        }
        
    },
    mounted(){
        console.log("vue2this",this.d)
    }
}
</script>

 显而易见,vue2的data函数里的this是vue实例

2.脚手架创建的vue3,但写法是vue2

<script>
export default {
    data(){
        return {
            d:this
        }
        
    },
    mounted(){
        console.log("是vue3,但写法是vue2的this",this.d)
    }
}
</script>

这打印是Proxy

3.脚手架创建的vue3,写法也是vue3

<script lang="ts" setup>
import { onMounted } from 'vue'
onMounted(() => {
  console.log('vue3的this', this)
})
</script>

 

没错,vue3的this是undefined,那我们要如何得到vue3的实例呢,getCurrentInstance(),在这里给大家介绍下这个方法,官网说:它只能在setup和生命周期钩子函数里使用,但是但是!!!这个方法它只能在开发环境下,不能在生产环境下使用!!!也别想着在vue3中依赖this的写法!

<script lang="ts" setup>
import { getCurrentInstance } from 'vue'
  console.log('vue3的getCurrentInstance()方法', getCurrentInstance())
</script>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值