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


    作者: 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 风格也可以选择这种写法.

  • 相关阅读:
    (C#)中断程序流程,处理事件(委托,事件,Lambda表达式)2/3
    (C#) 字符串替换
    (C#基础) 方法的参数修饰符
    (C#基础) 数据类型
    (C#)中断程序流程,处理事件(委托,事件,Lambda表达式)1/3
    (PowerShell) 文件操作
    图像处理基础
    (C#)中断程序流程,处理事件(委托,事件,Lambda表达式)3/3
    迅速理解 XML
    VI命令使用(查找替换)
  • 原文地址:https://www.cnblogs.com/slightboy/p/531938.html
Copyright © 2020-2023  润新知