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

如何使用Symbol在Movie类中创建字段并生成唯一产品ID

实现方案

要满足你的需求,可以通过类静态属性生成唯一ID和Symbol作为属性键存储电影名称来实现,具体代码如下:

// 定义唯一的Symbol键,用于存储电影名称
const movieNameKey = Symbol('movieName');

class Movie {
  // 静态属性:记录下一个要分配的唯一ID,初始值为1
  static nextUniqueId = 1;

  constructor(name) {
    // 为当前实例分配唯一ID,分配后自增保证下一个实例ID唯一
    this.id = Movie.nextUniqueId++;
    
    // 使用Symbol键存储电影名称,确保字段的唯一性
    this[movieNameKey] = name;
  }

  // 可选:提供获取电影名称的方法,因为Symbol键无法通过点语法直接访问
  getMovieName() {
    return this[movieNameKey];
  }
}

关键部分说明

  • 唯一ID生成:通过类的静态属性nextUniqueId维护计数,每次创建实例时将当前值赋值给实例的id属性,随后自增。这种方式保证了无论创建多少个实例,ID都是全局唯一的。
  • Symbol类型字段:使用Symbol创建唯一的属性键movieNameKey,用这个键给实例赋值电影名称。Symbol类型的键不会与普通字符串键冲突,也无法被常规对象遍历方法(如for...in)访问到,满足字段的特殊要求。

使用示例

const interstellar = new Movie('星际穿越');
const inception = new Movie('盗梦空间');

console.log(interstellar.id); // 输出:1
console.log(inception.id); // 输出:2
console.log(interstellar.getMovieName()); // 输出:星际穿越
console.log(inception[movieNameKey]); // 输出:盗梦空间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:10:31