Я пробовал mimi c 32-битные числа со знаком в JS. Я надеюсь, что есть какой-то способ заставить его действовать синтаксически идентично (после инициализации, конечно) языкам, таким как C, C ++, Java, et c.
let a = ....
...
// Once initalized
a = 4294967296
// Should return true
console.log(a == 0)
a = Math.pow(2, 31)
// Should return false
console.log(a == Math.pow(2, 31))
Моя попытка ниже. Я думаю, что это довольно близко, но я считаю ._
, определенно неловким. Есть ли лучшие способы, которыми такие типы данных могут имитироваться в JS? (Я также могу использовать Object.defineProperties
на window
и получить желаемый синтаксис для глобальных объектов, не уверен, что так будет лучше)
function int32_t(n) {
this._value = new Int32Array([n])
Object.defineProperties(this, {
_: {
get: () => this._value[0],
set: (n) => {
this._value[0] = n
return this._value[0]
},
configurable: true
}
})
}
let a = new int32_t(10);
// Once initalized
a._ = 4294967296
// Should return true
console.log(a._ == 0)
a._ = Math.pow(2, 31)
// Should return false
console.log(a._ == Math.pow(2, 31))