Javascript中如何为字典(Dictionary)的值传入变量并通过点语法赋值
问题根因
你现有代码的问题在于,myDictionary.js 定义字典时直接读取了不存在的 variables 变量,字典在模块导出时就会立刻执行取值逻辑,而非等到外部传入变量后再计算值。
可行实现方案
你只需要把字典的每个值改造为接收变量参数的函数,调用时传入外部变量即可拿到计算后的值,完全符合你字典结构固定、变量结构固定的需求:
第一步:修改 myDictionary.js
// 每个键对应一个接收variables参数的函数,返回实际要取的字段 const myDictionary = { key: (variables) => variables.item } export default myDictionary
第二步:main.js 调用调整(注意key的引用方式)
import myDictionary from "myDictionary.js" const variables = { item: "Hello" } // 如果key是固定字符串,要加引号,否则会读取变量key的值 const data = myDictionary['key'](variables) console.log(data) // 输出Hello
拓展方案:批量生成支持点语法的纯字典
如果你不想每次取值都手动调用函数,可以封装一个统一的处理函数,直接生成所有值计算完成的纯字典,后续可以直接用点语法取值:
// 新增处理逻辑 function resolveDictionary(dictionary, variables) { const resolved = {} for (const [key, getter] of Object.entries(dictionary)) { resolved[key] = typeof getter === 'function' ? getter(variables) : getter } return resolved } // 调用示例 const resolvedData = resolveDictionary(myDictionary, variables) console.log(resolvedData.key) // 直接点语法取值,输出Hello
内容的提问来源于stack exchange,提问作者jjlittle
相关产品推荐
相关产品推荐

