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


Posted in Javascript onMarch 24, 2007

作者: slightboy, 时间: 2006-10-17
此篇为 JS 实现版本, 以前作已交待原理 故不在此多做解释
如需原理介绍 请查看 VBS 版.
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 风格也可以选择这种写法.

Javascript 相关文章推荐
JavaScript 特殊字符
Apr 05 Javascript
js 动态文字滚动的例子
Jan 17 Javascript
js中的onchange和onpropertychange (onchange无效的解决方法)
Mar 08 Javascript
JavaScript的9种继承实现方式归纳
May 18 Javascript
超级给力的JavaScript的React框架入门教程
Jul 02 Javascript
Jquery中map函数的用法
Jun 03 Javascript
AngularJS动态加载模块和依赖的方法分析
Nov 08 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
Jan 11 Javascript
bootstrap paginator分页前后台用法示例
Jun 17 Javascript
使用vuex的state状态对象的5种方式
Apr 19 Javascript
vue自定v-model实现表单数据双向绑定问题
Sep 03 Javascript
JavaScript创建、读取和删除cookie
Sep 03 Javascript
用js实现的仿sohu博客更换页面风格(简单版)
Mar 22 #Javascript
漂亮的提示信息(带箭头)
Mar 21 #Javascript
自动生成文章摘要的代码[JavaScript 版本]
Mar 20 #Javascript
用roll.js实现的图片自动滚动+鼠标触动的特效
Mar 18 #Javascript
表单提交时自动复制内容到剪贴板的js代码
Mar 16 #Javascript
用javascript自动显示最后更新时间
Mar 15 #Javascript
用js实现预览待上传的本地图片
Mar 15 #Javascript
You might like
国外PHP程序员的13个好习惯小结
2012/02/20 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
script标签属性用type还是language
2015/01/21 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
node.js cookie-parser之parser.js
2016/06/06 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
2018/05/27 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
详解vue-router导航守卫
2019/01/19 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
2020/08/03 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
python对excel文档去重及求和的实例
2018/04/18 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
六行python代码的爱心曲线详解
2019/05/17 Python
Django框架表单操作实例分析
2019/11/04 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
python中time.ctime()实例用法
2021/02/03 Python
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
奖金申请报告模板
2015/05/15 职场文书
2015年银行信贷员工作总结
2015/05/19 职场文书
goland 清除所有的默认设置操作
2021/04/28 Golang
电频谱管理的原则是什么
2022/02/18 无线电
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js