我经常在我的 java 代码中使用这种策略,以使 Collection 只对外部世界只读,但避免大/经常克隆:
public abstract class MyClass {
List<Long> myIds;
public Collection<Long> getIds() {
return Collections.unmodifiableCollection(this.myIds);
}
}
我想在我的 JS 类中遵循相同的模式。这将使我的业务逻辑代码更安全、更清晰,因为我将能够在拥有这些字段的类中控制对我的列表的每次更改(推送/拼接等)。
目前对列表使用“私有”字段,并使用 get-set 函数从外部访问它们。唯一缺少的链接是一些等效于 java 的 Collections.unmodifiableCollection。不会复制整个列表的东西(例如 slice()),并且不会影响原始字段(例如 Object.freeze())。
JS中有这样的功能吗?如果没有,有人怎么能达到类似的效果(自定义迭代?)