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

在JavaScript或Vue中能否通过新属性访问原有属性?赋值异常排查

对象属性引用同对象其他属性时出现undefined的解决办法

你遇到的问题是因为在对象字面量初始化阶段,this并不指向当前正在创建的person对象,所以this.title取不到值,返回undefined,最终拼接出undefinedObject。

下面是几种可行的解决方式:

1. 使用getter方法动态计算属性值

通过定义getter函数,访问属性时才会执行计算,此时this会正确指向当前对象:

const person = {
  firstName: "John",
  lastName: "Doe",
  age: 50,
  title: "Style",
  get styleTitle() {
    return this.title + "Object";
  },
  eyeColor: "blue"
};

访问person.styleTitle时就能得到StyleObject。

2. 先创建对象再赋值属性

先完成对象的初始化,再通过对象本身引用title属性来赋值:

const person = {
  firstName: "John",
  lastName: "Doe",
  age: 50,
  title: "Style",
  eyeColor: "blue"
};
person.styleTitle = person.title + "Object";

3. 在Vue中使用计算属性(更推荐)

如果是在Vue组件里,直接用Vue的计算属性来处理,比在data对象里硬写更符合Vue的响应式逻辑:

<script>
export default {
  data() {
    return {
      person: {
        firstName: "John",
        lastName: "Doe",
        age: 50,
        title: "Style",
        eyeColor: "blue"
      }
    };
  },
  computed: {
    styleTitle() {
      return this.person.title + "Object";
    }
  }
};
</script>

如果一定要把styleTitle放在person对象内,也可以在组件的mounted钩子中完成赋值:

<script>
export default {
  data() {
    return {
      person: {
        firstName: "John",
        lastName: "Doe",
        age: 50,
        title: "Style",
        eyeColor: "blue"
      }
    };
  },
  mounted() {
    this.person.styleTitle = this.person.title + "Object";
  }
};
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:53:30