You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue组件中this关键字工作机制及跨对象访问props属性问题咨询

Vue组件this关键字问题解答

1. Vue组件中this关键字的工作原理

你代码里定义的anyobject只是组件配置对象,并非组件运行时的实际实例。Vue在初始化组件的过程中,会基于这个配置对象生成一个全新的组件实例,同时把配置中声明的props、data、computed、methods等所有属性和方法都挂载到这个实例上,并且会自动把所有配置内方法的上下文绑定到该组件实例,所以选项式API里所有方法、计算属性、生命周期钩子中的this,默认都指向当前组件的实例,而非你写的原始配置对象。

2. this可以访问tasks属性的原因

tasks是你在props配置项中声明的属性,Vue初始化时会把所有props定义的属性、data函数返回的属性、computed定义的计算属性全部代理到组件实例上,你不需要通过嵌套层级访问,直接用this就能调用。
你代码中incomplete计算属性里的this.tasks,本质是访问当前组件实例上代理的props属性,不是访问原始配置对象里的属性,自然可以正常取值。

代码说明

// 这只是组件配置对象,不会直接作为运行时的上下文
anyobject = {
  template: '#task-list',
  props: {
    // 这里声明的tasks会被Vue代理到组件实例上
    tasks: {default: []}
  },
  data() {
    return {
      // 这里的newTask同样会被代理到组件实例上,可通过this.newTask访问
      newTask: ''
    };
  },
  computed: {
    incomplete() {
      // 此处this指向Vue生成的组件实例,而非上面的anyobject对象
      return this.tasks.length; 
    }
  },

内容的提问来源于stack exchange,提问作者akmal hazim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 23:42:02