为什么使用私有访问说明符只实例化构造函数中的提供程序?是否有特定的原因只使用私有访问说明符?
私人注入constructor(private service: InjectedService)
公共注入constructor(service: InjectedService)
使用private行为是一种速记,而不是这样做:
constructor(service: InjectedService) {
this.service = service
}
您可以:
constructor(private service: InjectedService) {}
区别在于private
使该字段为私有,即不能从外部TypeScript代码访问。
由于TypeScript被编译为JavaScript,而JavaScript没有私有字段的概念,所以它仍然可以从外部访问,包括视图,但将其设置为私有仍然是一个好主意,因为它记录了服务是…对于类来说是私有的,因此不应该在类本身之外使用,包括视图。顺便说一句,我认为Angular即将提供的用于将模板编译为JavaScript代码的离线编译器将拒绝编译使用私有字段的视图。
一般来说,在OO中,private应该是字段的默认值:您希望尽可能少地公开字段,以便能够重构类的实现并更改其内部结构,而不会破坏使用该类的外部代码,并且仅依赖于公共API。
1)私有注入
构造函数(private service: InjectedService)
service是一个参数,但也成为对象的属性,所以你可以通过this来访问它。在类的其他方法中服务
2)公共注入构造函数(服务:InjectedService)
service只是构造函数作用域中的一个参数,不再与对象关联,所以你不能这样做。service