用二进制位表示权限,每个权限对应2的幂,如PERMISSION_READ = 1,通过按位操作实现高效权限管理。

JavaScript的按位操作符(Bitwise Operators)可以高效地处理权限控制,尤其适合管理多个独立但可组合的权限状态。核心思路是把每个权限当作一个二进制位,用一个整数表示用户的综合权限。
权限分配:使用2的幂作为标志
每个权限对应一个唯一的二进制位,因此使用2的幂来定义权限值:
const PERMISSION_READ = 1 const PERMISSION_WRITE = 1 const PERMISSION_DELETE = 1 const PERMISSION_ADMIN = 1也可以直接写成1, 2, 4, 8,但用左移操作更清晰,便于扩展。
组合权限:使用按位或(|)
将多个权限合并成一个用户权限值:
立即学习“Java免费学习笔记(深入)”;
let userPermissions = PERMISSION_READ | PERMISSION_WRITE; // 值为3 (0011)这个数值就代表该用户拥有读和写权限。
检查权限:使用按位与(&)
判断用户是否具备某项权限,只需与对应权限值做按位与操作:
function hasPermission(userPerm, permission) {return (userPerm & permission) !== 0;
}
// 使用示例
console.log(hasPermission(userPermissions, PERMISSION_READ)); // true
console.log(hasPermission(userPermissions, PERMISSION_DELETE)); // false
如果结果不为0,说明该位被激活,即拥有此权限。
添加或移除权限
可以动态修改用户的权限集合:
// 添加权限userPermissions |= PERMISSION_DELETE; // 现在有删除权限
// 移除权限(先取反,再按位与)
userPermissions &= ~PERMISSION_WRITE; // 移除写权限
这里~PERMISSION_WRITE会翻转所有位,确保写权限对应的位为0,从而实现“关闭”效果。
这种方式节省存储空间,逻辑清晰,特别适合前端角色权限判断、功能开关控制等场景。基本上就这些,简单但实用。










