权限统一控制
在很多场景下我们需要做权限控制,通常我们的做法是在场景请求数据时,在每个函数里面去判断是否有权限。但场景如果很多,更改权限控制逻辑时,每个场景的权限控制都要去改动,那样就很不友好了。那我们把权限控制和数据请求分离开,在请求数据前,先判断是否有权限。顺着这个思路,看下面的代码。
es5权限控制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
/**
* @content 每个执行函数执行前,统一判断权限
* 把权限判断 与 函数执行隔离开
* @params 第三个参数 => this
* @params 第三个后面的参数 => 传给执行函数fn的值
*/
let editable = false;
let obj = { name:'lilei' };
operate(checkAuthory, fetchData, obj, 1, [ 2, 3 ]);
function operate(authory, fn, context){//封装的函数
let args = Array.prototype.slice.call(arguments, 3);
if( !authory(editable) ){
return console.log('您没有权限!');
}
fn.apply(context, args);
}
function checkAuthory(editable){//权限校验函数
//权限校验操作
return editable;
}
function fetchData( x, y ){//数据请求函数
console.log('我请求的是数据接口'+this.name);
console.log('我请求的是数据接口'+ x );
console.log(y);
}
</script>
</body>
</html>