В javascript вы должны иметь возможность комбинировать их как:
var left_right = MyEnum.Left | MyEnum.Right;
Тогда тестирование будет таким же, как в вашем примере
if ( (left_right & MyEnum.Left) == MyEnum.Left) {...}
Вам просто нужно использовать побитовые операторы:
var myEnum = {
left: 1,
right: 2,
top: 4,
bottom: 8
}
var myConfig = myEnum.left | myEnum.right;
if (myConfig & myEnum.right) {
// right flag is set
}
Дополнительная информация:
Да, побитовая арифметика работает в Javascript. Вы должны быть осторожны с этим, потому что Javascript имеет только тип данных Number
, который реализован как тип с плавающей запятой. Но значения преобразуются в знаковые 32-битные значения для побитовых операций. Так что пока вы не пытаетесь использовать более 31 бита, все будет в порядке.