2

だから私はstackoverflowを読みました。ES6 では、これは無効です。

class MyClass {
   myProperty = "";

   constructor() {
       this.myProperty = "Hey";
   }
}

しかし、ES7では有効です。

ただし、これは有効ですか。

class MyClass {
    setViewModel(viewModel) {
        this.internalViewModel = viewModel;
    }

    get viewModel() { return this.internalViewModel }
}

internalViewModelここでは、実際に設定するまで定義しません。myClass.setViewModel(something)に電話する前に電話していなければ、から戻ってmyClass.viewModelくると思います。undefinedmyClass.viewModel

これは正しいです?

このES7クラスがあり、myPropertyそのようにアクセスしようとしたmyClass.myProperty場合、期待どおりになるでしょう"Hey"か?

4

1 に答える 1

2

このES6は正しいですか?

はい。

ただし、コンストラクターですべてのプロパティを作成しないのは悪い習慣と見なされる場合があります。

このES7クラスがあり、myPropertyそのようにアクセスしようとしたmyClass.myProperty場合、期待どおりになるでしょう"Hey"か?

myPropertyはい。ただし、これはクラスではなくインスタンス プロパティであることに注意してください。

var myClass = new MyClass;
myClass.myProperty; // "Hey"

また、イニシャライザを使用したインスタンス フィールドの宣言は、ほぼ同等のものを介してすぐに上書きされるため、いずれにしても完全に不要ですthis.myProperty = "Hey";

于 2016-02-17T22:20:31.747 に答える