基于逻辑运算的简单权限系统(实现) 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 风格也可以选择这种写法.

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值