問題タブ [es6-class]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
2716 参照

javascript - ECMAScript 6 クラス プロパティのアンダースコア プレフィックス

私が見たクラスパターンは、次のようなものになります。

console.log(new Foo('x', 'y', 'z'))実行出力:

console.log(JSON.stringify(new Foo('x', 'y', 'z')))実行出力:

これにより、アンダースコアのプレフィックス付きフィールドが得られますが、それを目指していませんでした。フィールドにアンダースコアのプレフィックスを持たないようにするにはどうすればよいですかinstance.prop

0 投票する
2 に答える
113 参照

javascript - ES6 クラスでは、静的メソッドからそのクラスのインスタンス化を返すことは問題ありませんか?

上記を JavaScript で実行したいと思います (より複雑な形式ではありますが)。このコードを実行すると、現在問題なく動作しますが、クラス内の関数がそのクラスのインスタンス化されたバージョンを返すのは奇妙に感じます。この方法でコードをビルドしない理由はありますか?

静的メソッドに代わる機能は次のとおりです。

これらのいずれかを使用することのプラスとマイナス(ある場合)は何ですか? 私が気付いていないこの目標を達成するための他のより良い方法はありますか?

0 投票する
0 に答える
33 参照

javascript - ES6 JavaScriptのベースコンストラクタでオブジェクトを作成する必要があるのはなぜですか?

JavaScript ES6 のサポートclassなどconstructorは以下のとおりです。Objectただし、派生クラスのコンストラクターに入るのではなく、基本コンストラクターでnew が作成されることを指定します。なぜこの要件が必要なのですか? クラスでコンストラクターを開始するときに作成し、Derivedクラスに渡してBase初期化を行うことはできますか?

0 投票する
0 に答える
348 参照

javascript - 1 つの ES6 クラスから 2 つの ES6 クラスを拡張する

1 つの ES6 クラスから 2 つの ES6 クラスを拡張するつもりであり、拡張された 2 つのクラスは Angular のコントローラーとして使用されます。

例えば、

上記の例では、controller1 と controller2 が角度コントローラーとして登録されています。これはうまく機能しますが、私が気づいたことは、各コントローラーがアクセスされるたびに、Base クラスが 2 回呼び出されることです。いくつかの質問:

このデザインパターンは正しいですか?はいの場合、基本コンストラクターが2回呼び出されるのを防ぐ方法は? 私が達成したいのは、両方のコントローラー間でいくつかのメソッドを共有することです。上記が有効なシナリオでない場合、これを達成するための理想的なアプローチは何ですか?

0 投票する
3 に答える
2909 参照

javascript - es5のES6メソッド(クラス)に相当するものは何ですか?

es6 クラス メソッドを ES5 にどのようにポリフィルしますか?

私は本を​​読んでいますが、次のように書かれています。

と同じです

コンストラクター関数内ではなく、プロトタイプに swingSword を追加するのはなぜですか?

関数はプロトタイプ チェーン上ではなく、オブジェクト上にある必要があるためです。

私は正しいですか、それとも間違っていますか?

0 投票する
3 に答える
998 参照

javascript - JavaScript用のRubyのモジュールのようなものはありますか

Ruby クラスと Ruby モジュールがあるとします。

そして今、私はこのようなことをすることができます

JavaScript で同じことができますか? extendsJavaScript クラスが既に継承されているため、キーワードを使用できません。クラスにいくつかの機能を混在させるにはどうすればよいですか?

更新しました

ES6 クラスで動作するものを使用したい

0 投票する
3 に答える
3135 参照

javascript - コンソールで JavaScript (CSS ではない) クラスを再定義する方法は?

私はJSクラスにかなり慣れていないので、主にバックエンドの仕事をしています。

私は新しい JS クラスをいじっていたので、ここで例を見始めました: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

クロム (クロム) 開発者ツール コンソールに移動し、Polygon クラスを作成しました。

次に、メソッドを含む例に従って、クラスを再定義したかったので、次のように書きました。

これによりエラーが発生します。Uncaught SyntaxError: Identifier 'Polygon' has already been declared(…)

ES6 には新しいスコープがあり、クラスは新しいスコープなどを自動的に使用することを理解しましたが、実際には、クラスを再定義するにはどうすればよいでしょうか? :D

私は通常Pythonを書いているので、必要なものすべてを再定義できることに慣れています。

0 投票する
1 に答える
802 参照

reactjs - コンストラクターの署名でES6 React Componentクラスを安全に分解することは可能ですか?

拡張するES6クラスReact.Component、つまりReactコンポーネントがあります。私のコンポーネントが次のようになっているとしましょう:

ここでは、コンストラクターのシグネチャで構造破壊を使用して、コンポーネントの状態で使用したい小道具をいくつか引き出しています。これらの値を必ず super に渡します。ただし、実際に同様のコードを実行すると、次のような警告が表示されます。

警告: MyComponent(...): で super() を呼び出すときはMyComponent、コンポーネントのコンストラクターが渡されたものと同じ props を渡すようにしてください。

私の質問は、関連する警告なしで示したように、コンストラクターの署名を分解できるかどうかです。(警告には正当な理由があると思いますが、その意味を完全には理解していないことも同様に確信しています。)