angularjs – 公共或私有 – Angular 2组件类方法混淆
发布时间:2020-12-17 08:51:59 所属栏目:安全 来源:网络整理
导读:我很难理解哪些方法应该是私有的,哪些方法应该在组件类中公开. 在判断方法是公共的还是私人的时候,服务似乎相当容易,例如: export class MyServiceClass { private _cache = {}; // this value is private and shouln't be accessed from outside public ac
我很难理解哪些方法应该是私有的,哪些方法应该在组件类中公开.
在判断方法是公共的还是私人的时候,服务似乎相当容易,例如: export class MyServiceClass { private _cache = {}; // this value is private and shouln't be accessed from outside public accessCache(){ // it's public as it's an API method return this._cache; } public setCache(newVal){ this._cache = newVal; } } 遵循该逻辑,组件中的所有方法都应该是私有的,因为这些方法都不应该暴露在类之外. export class MyComponent { private _getRandomNumbers(){ // this is used in view only /*..*/ } } 没有悲剧,但在this video你可以了解到只有组件的公共方法应该进行单元测试.按照上面的说法,我找不到在组件类中使用公共方法的任何理由,但我仍然有一些值得测试的方法(特别是在视图中使用的方法).这意味着我完全失去了角度世界中私人和公共方法的含义. 所以我的问题很简单: 组件中的哪些方法应标记为公共和私有.
在Component Class中,我会说,将所有内容设置为public(如果没有访问修饰符,则默认为public).
在正常情况下,我们不扩展组件类,因此,不需要访问修饰符,恕我直言. 有些情况下我们会继承一个组件.请参见此处component inheritance in Angular 2.但是,即使在这些情况下,也可能不需要访问修饰符. ... export class MyComponent { // injected service as private constructor(private _randomSvc: RandomService) {} getRandomNumbers(){ } // leave it as public @Input() myInput: string; // leave it as public @Output() myOutput; // leave it as public } 记住Javascript本身没有访问修饰符.访问修饰符仅适用于开发期间(IDE).虽然修饰符在某些情况下很有用,但我建议尽量减少使用它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |