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

JavaScript中如何通过属性获取类实例及实例名称?代码疑问求解

问题解答

1. 通过index获取对应实例的名称和平假名

首先得把所有hkr实例统一存到一个集合(比如数组)里,另外创建实例时最好给每个实例加个name属性存变量名(因为JS没法直接通过实例反向拿到它的变量名)。示例代码:

// 定义hkr类
class hkr {
  constructor(name, romaji, hiragana, katakana, index) {
    this.name = name;
    this.romaji = romaji;
    this.hiragana = hiragana;
    this.katakana = katakana;
    this.index = index;
  }
}

// 创建实例并加入数组
const allHKR = [
  new hkr('wo', 'wo', 'を', 'ヲ', 1),
  new hkr('ka', 'ka', 'か', 'カ', 2)
];

// 根据index查找实例
function getHKRByIndex(targetIndex) {
  const match = allHKR.find(item => item.index === targetIndex);
  if (match) {
    console.log(`实例名称:${match.name},平假名:${match.hiragana}`);
    return match;
  }
  console.log('未找到对应index的实例');
}

// 调用示例
getHKRByIndex(1);

2. 为什么input_romaji.value.index无效,wo.index有效

核心是数据类型不同:

  • wo是你用hkr类创建的实例对象,自带index等自定义属性,所以能直接访问wo.index。
  • input_romaji.value是输入框的字符串值(比如用户输入的罗马音),字符串本身没有你定义的index属性,自然拿不到值。你得先根据这个字符串找到对应的hkr实例,再访问实例的index。

3. 更实用的数据组织方式推荐

如果只是单纯存储罗马音、假名、索引这类静态数据,类确实有点“重”,推荐这几种轻便的方式:

  • 数组存储对象字面量:最直观,适合遍历或批量操作
const kanaData = [
  { name: 'wo', romaji: 'wo', hiragana: 'を', katakana: 'ヲ', index: 1 },
  { name: 'ka', romaji: 'ka', hiragana: 'か', katakana: 'カ', index: 2 }
];
// 根据index查找:
const target = kanaData.find(item => item.index === 1);
  • Map结构:如果经常根据index或罗马音做快速查找,Map的键值对查找效率更高
// 以index为键
const kanaMap = new Map([
  [1, { name: 'wo', romaji: 'wo', hiragana: 'を', katakana: 'ヲ' }],
  [2, { name: 'ka', romaji: 'ka', hiragana: 'か', katakana: 'カ' }]
]);
// 查找:
const target = kanaMap.get(1);
  • 对象索引:如果用字符串当键(比如罗马音),普通对象也很方便
const kanaObj = {
  wo: { hiragana: 'を', katakana: 'ヲ', index: 1 },
  ka: { hiragana: 'か', katakana: 'カ', index: 2 }
};
// 查找:
const target = kanaObj['wo'];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:01:01