从基本提供者继承时如何防止直接访问属性?

How to prevent direct access to properties when inheriting from a base provider?

这是 的跟进。提议的解决方案建议结合使用 angular.extendangular.copy(这可以通过 Angular 1.4 上的 angular.merge 完成)将基本提供程序实现复制到所有其他提供程序中。

但这导致了另一个我没想到的问题。通过这种技术,我的提供者现在可以通过 provider.setX 函数进行配置,并且可以直接访问 provider.config.x 属性。

这是一个演示问题的示例:

不太确定您在寻找什么,但 this.config.x 不是变量而是 属性,这就是它可以访问的原因。

如果您希望它不可访问,您需要将其声明为您正在设置的 controller/service/factory/wherever 范围内的局部变量 var config = {}。因为 function/method 内的局部变量在其作用域外不可访问,除非它们是闭包。

这是您的代码版本,它实例化了一个函数 BaseClient(但不再是提供程序,只是一个常规函数),其中包含一个无法触及的局部变量。同样,我不知道这是否是您想要的,因为我不知道您要解决哪个问题。

http://codepen.io/anon/pen/ZGazqo?editors=101