作者: 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 +
);
}
注: 红色部分为 java 风格写法 不是本例所必须.
只是做一个展示, 如果你比较喜欢 java 风格也可以选择这种写法.