作者: 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]); else return this.getValue(PermissionType.Read); } this.Write = function() { if (arguments.length > 0) this.setValue(PermissionType.Write, arguments[0]); else return this.getValue(PermissionType.Write); } this.Delete = function() { if (arguments.length > 0) this.setValue(PermissionType.Delete, arguments[0]); else return this.getValue(PermissionType.Delete); } this.getValue = function(permissionType) { return (this.Value & permissionType) == permissionType; } this.setValue = function(permissionType, value) { if (value) this.Value |= permissionType; else this.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 风格也可以选择这种写法.