class User {
constructor() {
this.name = 'xxx'
}
@checkLogin
getName() {
console.log('--已登录执行的逻辑')
}
}
function checkLogin(target, name, descriptor) {
console.log('...在这里判断登录,如果未登录')
}
let u = new User()
u.getName()
我想使用js修饰器实现判断登录的操作,正常的getName方法中实现已登录的逻辑,想通过checkLogin来检查登录状态
现在的问题是:执行完checkLogin之后,一定会执行getName这个方法,但我的逻辑是,如果校验失败,就不执行后面的方法了,这个怎么实现?
不用装饰之前,这块代码我经常这么写:
function checkLogin() {
// 一堆判断逻辑,然后return fasle/true
}
function getName() {
if(checkLogin()) {
// 已登录的逻辑
}else {
// 未登录,可能跳登录页,或打开登录框等等。。。
// 而且,这段if/else每个调用方法都需要写一份
}
}
如果用装饰器的话,getName这个方法只实现自己的逻辑,和是否登录根本就没有关系,更专注,更加解耦
慕码人8056858
相关分类