基于逻辑运算的简单权限系统(实现) JS 版

来源:互联网 发布:日本81端口活跃ip段 编辑:程序博客网 时间:2024/04/28 16:19

作者: slightboy, 时间: 2006-10-17

此篇为 JS 实现版本, 以前作已交待原理 故不在此多做解释

如需原理介绍 请查看 VBS 版.

 首发于: http://cs.alienwave.cn/Topic/356.aspx

var PermissionType ={Read : 1,Write : 2,Delete : 4}function PermissionSetComponent(value){this.Value = value;this.getRead = function(){return this.getValue(PermissionType.Read);}this.setRead = function(value){this.setValue(PermissionType.Read, value);}this.Read = function(){if (arguments.length > 0)this.setValue(PermissionType.Read, arguments[0]);elsereturn this.getValue(PermissionType.Read);}this.Write = function(){if (arguments.length > 0)this.setValue(PermissionType.Write, arguments[0]);elsereturn this.getValue(PermissionType.Write);}this.Delete = function(){if (arguments.length > 0)this.setValue(PermissionType.Delete, arguments[0]);elsereturn this.getValue(PermissionType.Delete);}this.getValue = function(permissionType){return (this.Value & permissionType) == permissionType;}this.setValue = function(permissionType, value){if (value)this.Value |= permissionType;elsethis.Value &= ~permissionType;}}var PermissionSet = new PermissionSetComponent(0);w("Read:");PermissionSet.Read(false);w(PermissionSet.Value +" "+ PermissionSet.Read());PermissionSet.Read(true);w(PermissionSet.Value +" "+ PermissionSet.Read());w("Write:");PermissionSet.Write(false);w(PermissionSet.Value +" "+ PermissionSet.Write());PermissionSet.Write(true);w(PermissionSet.Value +" "+ PermissionSet.Write());w("Delete:");PermissionSet.Delete(false);w(PermissionSet.Value +" "+ PermissionSet.Delete());PermissionSet.Delete(true);w(PermissionSet.Value +" "+ PermissionSet.Delete());function w(o){Response.Write(o +"<br />");}

注: 红色部分为 java 风格写法 不是本例所必须.

只是做一个展示, 如果你比较喜欢 java 风格也可以选择这种写法.

 
原创粉丝点击