JSでオブジェクトのidを取得する
オブジェクトが同じものがどうかを検証する
今思ったがSymbolを使ってもできそうだな
code:ts
const check = function() {
// @ts-ignore
if (typeof Object.id == "undefined") {
var id = 0;
// @ts-ignore
Object.id = function(o) {
if (typeof o.__uniqueid == "undefined") {
Object.defineProperty(o, "__uniqueid", {
value: ++id,
enumerable: false,
writable: false
});
}
return o.__uniqueid;
};
}
};
check();
const a = { a: 1, b: 2 };
const b = { a: 1, b: 2 };
const c = b;
// @ts-ignore
console.log(Object.id(a)); // 1
// @ts-ignore
console.log(Object.id(b)); // 2 ←異なるものならidがincされる
// @ts-ignore
console.log(Object.id(c)); // 2←同一なので同じ
参考