繁体   English   中英

有没有办法在 JavaScript 中有条件地缩短对象的成员函数?

[英]Is there a way to shorten a member function of an object conditionally in JavaScript?

我正在制作一个既需要.toArray()又不需要的函数。 es6、es7 或 es8 中是否有条件添加这个?

await db
   .collection(collection)
   .find(params)
   .toArray() //I want tis conditionally added or not

在这个意义上(这不起作用)

   multiple && .toArray()

或者这只能在两种方法上实现?

有没有办法在 JavaScript 中有条件地缩短对象的成员函数?

并不真地。 您有一组链式方法,并且不能有条件地将某些内容插入链中。

我的感觉是,最明确的选择是这样的:

let x = db.collection(collection).find(params);
if (someCondition) x = await x.toArray();

还有其他奇怪的事情,例如提前在对象上放置一个无操作方法,然后从有时包含“toArray”有时包含“noop”的变量执行方法。

let x = await db.collection(collection).find(params)[someCondition ? "toArray" : "noop"]();

但是,我认为我自己永远不会以这种方式编写代码,因为我认为它不是很清楚。


仅供参考,您的特定示例有点奇怪,因为.find()返回一个游标对象,而.toArray()返回一个解析为数组的承诺。 因此,您还要求以一种方式与另一种方式最终获得不同类型的数据。 似乎这种不同的结果类型无论如何都必须沿着不同的代码路径走,因此条件分支不仅仅是这一步。 这表明人们应该真正着眼于整体问题的更大图景,而不仅仅是这一步或为了提出最佳解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM