2016-04-17 3 views
1

私はいくつかのAngular2コードを見た:Angular2では、クラス定義内のコードは初期化子のように見えるので、コンストラクタ()は違いは何ですか?

export class CoursesComponent { 
    foo = "wah la"; 
    courses; 

    constructor(courseService: CourseService) { 
     this.courses = courseService.getCourses(); 
    } 
} 

クラス定義foo = ...の内部コードは初期化子で、constructor() {}も初期化され、なぜ我々は両方が必要との違いは何であるならば?

+0

の省略形であるにもあるのでしょうか?申し訳ありません本当にあなたが尋ねたいものを理解していません。 –

+0

正確ではありません。ここではフィールド初期化子とコンストラクタについて説明します。リンクされた質問はコンストラクタと 'ngOnInit()'に関するものです。 –

+1

バニラJavaScriptコンストラクタの@PankajParkar初期化子、 'function Animal(name){this.name = name; this.energyLevel = 100; } ' –

答えて

1

フィールドイニシエーターが便利です。それらは短く、コードを読みやすくしますが、かなり制限されています。コンストラクタに渡されたパラメータにはアクセスできず、初期化式のクラスから他のフィールドにアクセスすることはできません。

foo = "wah la"; 

コンストラクタは、あなたは、コンストラクタで渡され、また、式の中で、他の地域のフィールドにアクセスされた値に応じて、局所的なフィールドを初期化することができます

constructor(courseService: CourseService) { 
    this.courses = courseService.getCourses(); 
} 

より強力です。また、if,for、...フィールドの初期化子でサポートされていないその他の制御文を使用することもできます。

constructor(private courseService: CourseService) 

または

constructor(public courseService: CourseService) 

あなたはinitializer` `によって何を意味

private /* or public */ courseService:CourseService; 

constructor(courseService: CourseService) { 
    this.courseService = courseService; 
} 
関連する問題