这是对 How to inherit from base provider (not the provider factory)? 的跟进.提议的解决方案建议结合使用 angular.extend
和 angular.copy
(在 Angular 1.4 上仅使用 angular.merge
即可完成)以将基本提供程序实现复制到所有其他提供程序中。
但这导致了另一个我没想到的问题。通过这种技术,我的提供程序现在可以通过 provider.setX
函数进行配置,并可以直接访问 provider.config.x
属性。
这是一个演示问题的示例:
最佳答案
不太确定您在寻找什么,但是 this.config.x
不是变量而是属性,这就是它可以访问的原因。
如果您希望它不可访问,您需要将其声明为局部变量 var config = {}
在 Controller /服务/工厂/任何您设置它的范围内。因为函数/方法内的局部变量在其作用域之外是不可访问的,除非它们是闭包。
这是您的代码版本,它实例化了一个函数 BaseClient
(但不再是提供程序,只是一个常规函数),其中包含一个无法触及的局部变量。同样,我不知道这是否是您想要的,因为我不知道您要解决哪个问题。
关于javascript - 从基本提供者继承时如何防止直接访问属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30970343/