我正在使用常见的 WeakMaps 模式来模拟 es6 类中的私有变量,但我找不到一种方法来拥有“受保护”变量,这意味着变量是私有的并且可以通过派生类访问,例如:
var Window = (function() {
const _private = new WeakMap();
const internal = (key) => {
// Initialize if not created
if (!_private.has(key)) {
_private.set(key, {});
}
// Return private properties object
return _private.get(key);
};
class Window {
constructor() {
// creates a private property
internal(this).someProperty = "value";
}
}
return Window;
})();
如果我使用相同的模式创建一个子类,我如何someProperty
在子类中访问而不必在基类中定义一个 getter 方法(从而完全违背了为私有属性提供弱映射的整个目的)?
如果使用这种模式没有优雅的解决方案,那么最好的行动方案是什么?我正在构建一个 web 应用程序,它可以有各种“分层窗口”显示各种产品,从一个不同的脚本加载,该脚本对 .php 端点的请求很少以收集这些信息。
图书馆本身并不打算成为每个人都可以访问的公共图书馆,大多数其他队友可能需要编辑其中的一部分,但他们仍然会尊重定义的模式/约定
从安全的角度来看,大多数对其他 API 的请求将通过单独的脚本处理有效负载的验证来完成,所以我真正想要完成的是制作可重用的Window
类,这些类可以跨派生类使用某种“受保护”变量,因为它在构建这种特殊类型的 GUI 的过程中肯定会帮助我