【发布时间】:2015-12-16 07:09:28
【问题描述】:
所以按照惯例,由于 JavaScript 没有访问修饰符,我必须在“私有”函数名称前加上下划线 (_)。但是我在这里有点困惑,比如说我正在用 C++ 或 Java 编写一个类,它有两个函数,一个执行内部计算,第二个返回内部计算的结果。
所以,我有这两个功能
performInternalSecretCalculation();
getResult();
performInternalSecretCalculation() 应该是私有的,因为我不希望其他类担心该类如何处理计算,因此我不导出此函数。而getResult() 将被其他类使用,因此我将其公开并导出此函数。
但是对于 React 类,我没有导出任何函数,所有定义在 React 类中的函数都在其中使用。那么差异化因素是什么?什么时候应该在函数名前加上下划线?
【问题讨论】:
-
"应该是私有的,因为我不想让其他类担心该类如何处理计算" - 嗯,不,这不是你想要它的原因私人的。 all 方法的目的是隐藏实现。仅当您不希望其他人调用该方法(在您的情况下:触发计算)时,您才将其设为私有。
-
@Bergi “不应该担心”暗示我不希望其他类调用此方法,如果文本中不清楚,请见谅
-
让我印象深刻的是“担心……如何”这个词——也许你想edit文本
-
你能在你的 React 示例中展示一个代码示例吗?下划线是纯粹的约定,没有办法在经典的 OOP 意义上在 ES6 中实现私有访问修饰符,尽管有很多替代方案。但是,
CustomClass.compute()和在类中作用域的私有compute()函数是我们可以建议帮助的两种不同实现。 -
如果可以的话,将私人候选人移出班级主体并使其成为模块范围。传递所有相关上下文数据以弥补类方法上的上下文丢失并不需要太多。
标签: javascript reactjs react-native