如何在同一JavaScript对象内部引用自身属性?
解决对象属性自动关联的问题
你遇到的问题核心是对象字面量初始化时,this不指向当前正在创建的对象,所以访问this.entry会返回undefined,而且你写的对象内函数语法也有误,自然达不到预期效果。下面给你几个实用的解决方案:
方案1:先定义变量复用(简单直接)
先把entry单独定义成变量,再在对象里重复使用,避免手动重复输入:
const entry = "001"; const test = [ { entry: entry, name: "Name", image: `link/${entry}`, types: ["type1"], }, ];
方案2:工厂函数批量创建(适合多对象场景)
如果需要创建多个结构类似的对象,用工厂函数可以批量处理,一次传参自动生成关联的image:
function createItem(entry, name, types) { return { entry, name, image: `link/${entry}`, types, }; } // 批量生成对象 const test = [ createItem("001", "Name", ["type1"]), createItem("002", "Another Name", ["type2", "type3"]), ];
方案3:getter属性实现动态关联(支持后续更新)
如果希望image能随着entry的修改自动同步,用对象的getter属性,每次访问image时都会自动计算最新值:
const test = [ { entry: "001", name: "Name", types: ["type1"], // 定义getter,访问时自动执行 get image() { return `link/${this.entry}`; }, }, ]; // 访问image console.log(test[0].image); // 输出 link/001 // 修改entry后,image自动更新 test[0].entry = "002"; console.log(test[0].image); // 输出 link/002
内容的提问来源于stack exchange,提问作者user21629409
相关产品推荐
相关产品推荐

