網站搜尋

angular - 使用 JavaScript 創建唯一的物件標識符


我在客戶端使用的物件需要一個唯一的 ID。我的物件陣列非常小,通常是 4 個項目,不會更多。

我使用這個:

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

是否有某些可能是 JavaScript 或 Angular 內部的東西,我可以訪問,而不是手工製作的屬性?

答案#1

你可以使用一個符號。

從 Symbol() 返回的每個符號值都是唯一的。

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

如果瀏覽器支援不允許您使用符號,您可以改用對物件的引用。

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

答案#2

在 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 就無法從模組外部被修改。