gpt4 book ai didi

Javascript - 静态方法和实例方法的名称相同不好的做法?

转载 作者:行者123 更新时间:2023-12-03 22:20:30 25 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.


4年前关闭。







Improve this question




在 Javascript 中,给静态方法和实例方法同名是否被认为是不好的做法?

假设我有一个代表数据库表的类 ( Model ),并且我想提供 2 个选项来获取一些值:(1) 使用 id,(2) 通过实例:

class Foo extends Model {

static getById(id) {
return Foo.query().findById(id);
}

static getBars(id, limit, offset) {
return Foo.getById(id).then(foo => foo.getBars(limit, offset));
}

getBars(limit, offset) {
return this.$relatedQuery('bars').range(limit, offset);
}

}

此示例使用 Objection JS。

因此,如果您已经有 Foo 的实例调用 foo ,您可以调用 foo.getBars(10, 0) ,而不是 Foo.getBars(fooId, 10, 0) .

最佳答案

当它为您简化事情(或大大缩短您的代码或其他东西)时很好,但当然它会使评估两种使用方式中的哪一种变得困惑。另外,如果我想从 id 中获取 baz 和 qux 怎么办?如果我使用静态方法,则需要访问数据库两次。因此我宁愿推荐使用

class Foo extends Model {
… // constructor
static fromId(id) {
return new this({bar: execute(`select bar from foo where id = ${id}`)});
}
getBaz() {
return getBazFromBar(this.bar);
}
}

这样你就可以做 Foo.fromId(…).getBaz()而不是 Foo.getBaz(id) .

关于Javascript - 静态方法和实例方法的名称相同不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47443124/

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