基于逻辑运算的简单权限系统(实现) 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读取cookie函数代码
Oct 16 Javascript
jquery.cookie用法详细解析
Dec 18 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
Jan 02 Javascript
node.js中的fs.lstat方法使用说明
Dec 16 Javascript
JavaScript简介
Feb 15 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
Apr 12 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
Oct 12 Javascript
Vue学习之组件用法实例详解
Jan 06 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
Mar 17 Javascript
js实现表格单列按字母排序
Aug 12 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
Nov 06 Javascript
微信小程序实现倒计时功能
Nov 19 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在Web开发领域的优势
2006/10/09 PHP
NOT NULL 和NULL
2007/01/15 PHP
php adodb分页实现代码
2009/03/19 PHP
php读取javascript设置的cookies的代码
2010/04/12 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
php实现可运算的验证码
2015/11/10 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
htm调用JS代码
2007/03/15 Javascript
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
node跨域请求方法小结
2017/08/25 Javascript
Less 安装及基本用法
2018/05/05 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
一则python3的简单爬虫代码
2014/05/26 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
浅谈Python爬虫基本套路
2019/03/25 Python
Fabletics官网:美国运动服饰品牌,由好莱坞女演员凯特·哈德森创立
2019/10/19 全球购物
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
几道数据库的面试题或笔试题
2014/05/31 面试题
销售岗位职责范本
2014/06/12 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS