Angular2:为什么要在构造函数中使用私有访问说明符来实例化提供商?



为什么使用私有访问说明符只实例化构造函数中的提供程序?是否有特定的原因只使用私有访问说明符?

私人注入

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

相关内容

  • 没有找到相关文章

最新更新