我在客户端使用的对象需要一个唯一的ID。我的对象数组非常小,通常是4个项目,而不是更多。
我用这个:
export class MyItem {
uniqueObjectIdentifier: number;
constructor(obj) {
this.uniqueObjectIdentifier = Math.random();
}
}
我可以访问javascript或angular internal而不是手工制作的属性吗?
答案 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
无法从模块外修改。