从基本提供程序继承时如何防止直接访问属性
How to prevent direct access to properties when inheriting from a base provider?
这是How to inherit from base provider(not the provider factory)?的后续内容?。所提出的解决方案建议angular.extend
和angular.copy
的组合(在Angular 1.4上仅使用angular.merge
即可完成),以将基本提供者实现复制到所有其他提供者中。
但这导致了另一个我没想到的问题。有了这种技术,我的提供者现在可以通过provider.setX
函数进行配置,还可以直接访问provider.config.x
属性。
下面是一个演示问题的例子:
- http://codepen.io/anon/pen/ZGXRKr
不确定你想要什么,但this.config.x
不是一个变量,而是一个属性,这就是为什么它是可访问的。
如果你希望它不可访问,你需要在控制器/服务/工厂/的范围内,无论你在哪里设置它,都将其声明为局部变量var config = {}
。因为函数/方法内的局部变量在其范围外是不可访问的,除非它们是闭包。
以下是代码的一个版本,它实例化了一个函数BaseClient
(不再是提供程序,只是一个常规函数),该函数包含一个不能触摸的局部变量。再说一遍,我不知道这是否是你想要的,因为我不知道你想解决哪个问题。
http://codepen.io/anon/pen/ZGazqo?editors=101
相关文章:
- 如何防止在javascript中执行继承属性的getter-setter方法
- 如何防止jQuery在单击时更改href属性
- 单选按钮和复选框.防止更改值属性
- 如何防止翡翠模板解析 HTML 属性
- 通过添加一些数据属性来防止特定 dom 的引导
- JS:防止访问未定义对象的属性时出错
- HTML5可拖动属性:防止助手出现
- 通过JavaScript更新名称属性时,防止单选按钮丢失选中状态
- 扩展hash属性并防止用coffeescript和marionette js覆盖它
- 如何防止jQuery扩展深度副本复制我的一些自定义属性
- EmberJS-防止将具有重复属性的记录添加到存储中
- 将点击事件添加到TH伪元素,从TH获取数据属性,防止点击时触发TH事件
- 防止闭包编译器在不使用括号表示法的情况下重命名属性
- 如何防止在自定义事件调度系统中意外更改事件的属性?
- addslashes()在HTML属性中防止XSS是否安全?
- JavaScript:防止无意中创建新属性
- 防止在JavaScript中污染RegExp构造函数的属性
- 防止CKEditor删除样式属性中无效的样式声明
- 如何防止jQuery插入'xmlns'属性在XML对象中
- 如何防止IE10崩溃时,它试图使用DomObject.过滤器属性