gpt4 book ai didi

javascript - 如何在JS es6类中实现多个方法?

转载 作者:行者123 更新时间:2023-11-28 14:30:45 25 4
gpt4 key购买 nike

我有一个用 JS 创建的验证类:

let test = new Validator(req.body);

现在我想测试一些东西,也许这个对象中的特定键是2-5个字符长度,我会这样做:

let myBoolean = test.selector("firstName").minLength(2).maxLength(5);
// firstName is like: req.body.firstName

如何在类里面做到这一点?

编辑

我做了这样的事情:

audit.isLength({selector: "from", gte: 2, lte: 35})

class Validator {

constructor(obj) {
this.obj = obj;
this.isValid = true;
}

isExists(sel) {
if (typeof this.obj[sel] === "undefined") return false;
return true;
}

isLength(info) {
let sel = this.obj[info.selector];
if (typeof sel === "undefined") return false;
if (info.gte) {
if (sel.length<info.gte) return false;
}
if (info.lte) {
if (sel.length>info.lte) return false;
}
if (info.gt) {
if (sel.length<=info.gt) return false;
}
if (info.lt) {
if (sel.length>=info.lt) return false;
}
return true;
}
}

最佳答案

尝试这样的操作 - 将要验证的对象分配给实例化的属性,从每个验证调用返回 this,并在验证时分配给 isValid 属性对象上(如果它还不是 false)。请注意,您最终需要访问 isValid 属性才能检索 bool 值。

class Validator {
constructor(obj) {
this.obj = obj;
this.isValid = true;
}
selector(sel) {
this.sel = sel;
return this;
}
minLength(min) {
if (this.isValid) this.isValid = this.obj[this.sel].length >= min;
return this;
}
maxLength(max) {
if (this.isValid) this.isValid = this.obj[this.sel].length <= max;
return this;
}
}

const test = new Validator({firstName: 'foobar'}); // 6 chars: invalid
console.log(test.selector("firstName").minLength(2).maxLength(5).isValid);
const test2 = new Validator({firstName: 'fooba'}); // 5 chars: valid
console.log(test2.selector("firstName").minLength(2).maxLength(5).isValid);
const test3 = new Validator({firstName: 'f'}); // 1 char: invalid
console.log(test3.selector("firstName").minLength(2).maxLength(5).isValid);

关于javascript - 如何在JS es6类中实现多个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51621342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com