如何在标志中检查权限
How to check permission in flag?
用户拥有12 权限
12=1100
8=1000
=创建
4=0100
=读取
2=0010
=更新
1=0001
=删除
如何检查此用户是否具有创建权限?
使用按位AND运算符(&
),如下所示:
if ((flag & 0x08) == 0x08) {
// They have it
}
(0x08十六进制=1000二进制=8十进制。)
&
获取操作数并返回一个值,该值仅包含在两个操作数中设置的位(在将操作数转换为标准2的补码32位整数之后)。所以0x0C & 0x08
是0x08
,因为在两个操作数中都设置了0x08
位,但(比如)0x07 & 0x08
是0x00
,因为其中一个操作数没有设置该位。
如果您正在检查一个您知道只包含一位的值(如0x08
),则实际上不需要== 0x08
部分,这很好:
if (flag & 0x08) {
// They have it
}
但是如果您有需要使用多个位进行检查的掩码,如0x0A
,则需要==
,因为否则0x08
或0x02
以及0x0A
的结果都是真实的。因此,使用模式(thingToTest & flagToTestFor) == flagToTestFor
是一个很好的习惯
您不必使用十六进制,但我发现它在处理位时很方便(因为JavaScript没有文本二进制表示法)。或者,您可能会考虑在代码开头声明的一些"常量"(在ES6中可以是常量,但现在我们将使用ES5):
var CREATE_FLAG = parseInt("1000", 2);
var READ_FLAG = parseInt("0100", 2);
var UPDATE_FLAG = parseInt("0010", 2);
var DELETE_FLAG = parseInt("0001", 2);
然后你就可以做CCD_ 21了。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 递归使用 eval() 是检查程序执行的好方法吗?
- 检查onsubmit doenst work jquery contactform上的函数
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- API密钥使用和检查示例
- 如何让程序检查所选单词中是否有按键
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 用于检查数组中是否存在元素的javascript自定义方法
- 如何检查字符串的一部分与数组匹配
- Jquery如何检查今天的时间大于使用给定时间
- 使用javascript反复检查用户在facebook上的登录状态
- 使用 jQuery 检查所有值是否为空或已填充
- 使用Javascript使用数组检查文本框中的值
- JavaScript代码未正确检查ajax请求
- 如何检查用户在html5视频播放器中观看了完整的视频
- 从应用程序脚本检查谷歌网站访问权限