使用javascript创建唯一的对象标识符

时间:2017-07-12 18:30:45

标签: javascript angular typescript ecmascript-6

我在客户端使用的对象需要一个唯一的ID。我的对象数组非常小,通常是4个项目,而不是更多。

我用这个:

export class MyItem {   
    uniqueObjectIdentifier: number;
    constructor(obj) {    
        this.uniqueObjectIdentifier = Math.random();
    }
}

我可以访问javascript或angular internal而不是手工制作的属性吗?

2 个答案:

答案 0 :(得分:6)

您可以使用Symbol

  

从Symbol()返回的每个符号值都是唯一的。

export class MyItem {
  uniqueObjectIdentifier: symbol;
  constructor(obj) {
    this.uniqueObjectIdentifier = Symbol();
  }
}

如果浏览器支持不允许您使用符号,则可以使用对象的引用。

export class MyItem {
  uniqueObjectIdentifier: object;
  constructor(obj) {
    this.uniqueObjectIdentifier = {};
  }
}

答案 1 :(得分:1)

TypeScript 中,您可以执行以下操作:

export class MyItem {
  static currentId: number = 0;
  uniqueObjectIdentifier: number;

  constructor(obj) {
    this.uniqueObjectIdentifier = MyItem.currentId++;
  }
}

JavaScript ES6中:

export class MyItem {
  constructor(obj) {
    this.uniqueObjectIdentifier = MyItem.currentId++;
  }
}
MyItem.currentId = 0;

或者您可以使用未导出的模块范围变量来保存计数器:

let currentId = 0;

export class MyItem {
  constructor(obj) {
    this.uniqueObjectIdentifier = currentId++;
  }
}

那样currentId无法从模块外修改。

相关问题