V8 разработчик здесь. Как правило, нет способа определить объем занятой памяти объекта, и BigInts не являются исключением. Почему вы хотите получить к нему доступ?
Что касается внутренней реализации в V8, BigInt имеет маленький заголовок объекта (в настоящее время два размера указателя; это может измениться со временем), а затем бит для каждого бита BigInt, округленный до кратных размер указателя. 99999 - это 17-битное число, поэтому в вашем примере let a = 99999n
(«BigInt(99999n)
» лишнее!) Выделенный BigInt будет использовать (2 + Math.ceil(17/64)) * 64 bits === 24 bytes
в 64-битной системе.
Может иметь или не иметь смысла добавлять связанные с длиной свойства или методы (.bitLength
?) В BigInts в будущем. Если у вас есть сценарий использования, я предлагаю вам подать проблему на https://github.com/tc39/proposal-bigint/issues, чтобы ее можно было обсудить.