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