問題タブ [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 投票する
0 に答える
29 参照

javascript - シンボルとローカル変数名を同じにすることはできませんか?

ES6 では、グローバル シンボルとローカル変数が競合しています。コードは次のとおりです。

なぜこれが起こるのですか?バグですか?

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

javascript - JavaScript のカスタム配列のような getter

次のような単純な ES6 クラスがあります。

new Ring(1, 2, 3)[3]Ring オブジェクトのインデックスがラップして、 1 が返され、3 が返されるようにしたいと考えていますnew Ring(1, 2, 3)[-1]。これはES6で可能ですか?もしそうなら、どのように実装しますか?

完全にカスタマイズされたゲッターを許可するプロキシについて読んだことがありますが、プロキシをクラスに適用する方法がわかりません。私はこれを管理しました:

myRingラッピング インデックスをサポートする Ring オブジェクトになりました。問題は、毎回そのように Ring オブジェクトを定義しなければならないことです。new Ring()呼び出しがそれを返すように、このプロキシをクラスに適用する方法はありますか?

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

javascript - ES6 - クラス プロトタイプをシングルトンにアタッチする

「新しい」クラスを既存のインスタンスにアタッチする最善の方法は何だろうと思っています。

例: IPC チャネルを介して通信できるように、既存の IPC クラス インスタンスに「拡張」する必要がある「ワーカー」クラスがあります。

そして、次のように使用できます。

これはパフォーマンスを低下させるため、悪い習慣です.. https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf

この場合、「send」メソッドは何百万回も呼び出されます。

このようなユースケースでは、何をお勧めしますか?

Worker インスタンスですべての関数を再度作成し、そのメソッドで ipc.func() を呼び出すこともできますが、これもアンチパターンのように感じます。

ありがとう

説明:

「ホスト」ワーカー (メイン) が 1 つあります。これには、既に初期化された IPC (node-ipc) インスタンスがあります。

ワーカー「子」を作成するときはいつでも、(既存の) 親 IPC インスタンスを使用して子ワーカーに接続したいと考えています。

したがって、新しい Worker({ipc:ipc}) を作成するときはいつでも、worker.prototype を IPC インスタンスにアタッチできると便利です。したがって、worker.send() と IPC インスタンスを実行するだけです。そのメイン - >子チャネルから行くことを知っています..

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

javascript - これは、未定義ではない場合でも、devtools では未定義です。

これはコンソールでは定義されていません 「これ」は明らかに未定義ではありませんが、devtool コンソールでは未定義です。devtools のバグである必要がありますか?

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

javascript - 空の ES6 クラスの初期化

表示、作成、更新などに一連のプロパティを受け取るクラスである View があるアプリを構築しています。

私はこのようにビューを設定します

View新しいビューが作成されているときに aを初期化できるようにしたいのですが、正しい方法は次のように考えています

let newView = new View()

残念ながら、これを行うと、コンストラクター関数が呼び出されないようです。このテストを実行すると

expect(newView.id).toBe(undefined)

エラーが発生しますcannot read property id of undefined

let newView = new View({})

正しく返されますが、空のオブジェクトを提供するのは少し奇妙です。これは正しいです?空のクラスをインスタンス化するより良い方法はありますか?