ホームページ > ウェブフロントエンド > jsチュートリアル > ES6 クラスのクラス変数がネイティブにサポートされていない場合、クラス変数をどのように管理しますか?

ES6 クラスのクラス変数がネイティブにサポートされていない場合、クラス変数をどのように管理しますか?

Barbara Streisand
リリース: 2024-11-15 12:46:02
オリジナル
552 人が閲覧しました

How do you manage class variables in ES6 classes when they are not natively supported?

ES6 のクラス変数の代替手段

ES5 では、以下に示すように、開発者はクラスとクラス変数を作成するために快適なパターンをよく使用していました。コード:

// ES 5
FrameWork.Class({

    variable: 'string',
    variable2: true,

    init: function(){

    },

    addItem: function(){

    }

});
ログイン後にコピー

ただし、ES6 では、以下に示すように、クラスをネイティブに作成するときにクラス変数を持つオプションが含まれていません:

// ES6
class MyClass {
    const MY_CONST = 'string'; // <-- this is not possible in ES6
    constructor(){
        this.MY_CONST;
    }
}
ログイン後にコピー

これは、ES6 クラスが制限されているためです。メソッドを含むものに。コンストラクターで this.myVar を設定することは可能ですが、特に大規模なクラスの場合、コンストラクターが乱雑になることは望ましくありません。

この問題に対処するために、次のようないくつかのアプローチが検討されています。

  • ClassConfig ハンドラーの作成: クラスとは別に宣言されたパラメーター オブジェクトをハンドラーに渡します。その後、ハンドラーがクラスにアタッチされます。 WeakMaps は、この目的のために統合される可能性があります。
  • ステージ 3 提案: この提案では、構文 varName = value を使用してクラス宣言/式本体内で変数を宣言できます。将来廃止される予定です。
  • コンストラクター変数の設定: 完璧な解決策ではありませんが、constructor(){ this.foo = bar } を使用してインスタンス変数を設定できます。
  • ES7 プロパティ初期化子: ES7 の新しい提案により、クラス宣言と式を使用してより簡潔なインスタンス変数を宣言できます。

以上がES6 クラスのクラス変数がネイティブにサポートされていない場合、クラス変数をどのように管理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート