[解決済み] TraceurでES6クラスのプライベートメソッドを実装する方法【重複あり
質問
現在、ES6の機能を活用するために、Traceur Compilerを使用しています。
ES5から実装したいのですが。
function Animal() {
var self = this,
sayHi;
sayHi = function() {
self.hi();
};
this.hi = function() {/* ... */}
}
現在、traceur は
private
と
public
キーワード (
ハーモニーから
). また、ES6 のクラス構文では、単純な
var
(または
let
) をクラス本体内に記述します。
私が見つけた唯一の方法は、クラス宣言の前にプライベートをシミュレートすることです。次のようなものです。
var sayHi = function() {
// ... do stuff
};
class Animal {
...
何もしないよりはましだが、さすがに正解はないだろう。
this
を使用せずにプライベートメソッドに
apply
-または
bind
-を毎回つけています。
そこで、traceurコンパイラと互換性のあるES6クラスでプライベートデータを使用する可能性はあるのでしょうか?
どのように解決するのですか?
はありません。
private
,
public
または
protected
のキーワードは、現在の
ECMAScript 6仕様
.
そのため、Traceur は
private
と
public
. 6to5(現在は"Babel"と呼ばれています)を実現します。
本提案
実験的な目的で
本論
). でも、あくまで提案ですからね。
というわけで、今のところプライベートプロパティは
WeakMap
(参照
ここで
). もう一つの選択肢は
Symbol
- を通して簡単にアクセスできるため、実際のプライバシーは確保できません。
Object.getOwnPropertySymbols
.
IMHOは、現時点での最善の解決策は、単に擬似的なプライバシーを使用することです。もしあなたが頻繁に
apply
または
call
を指定した場合、このメソッドは非常にオブジェクトに依存します。そのため、クラス内でアンダースコアのプレフィックスを付けて宣言するのがよいでしょう。
class Animal {
_sayHi() {
// do stuff
}
}
関連
-
[解決済み】React-Redux: アクションはプレーンオブジェクトでなければならない。非同期アクションにはカスタムミドルウェアを使用する
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] JavaScriptでカンマを桁区切りにして数値を表示する方法
-
[解決済み] オブジェクトをメンバーとして、プレーンなJavaScriptオブジェクトをループさせる方法
-
[解決済み] 指定された要素にクラスを追加するには?
-
[解決済み] JavaScript ES6クラスにおけるプライベートプロパティ
-
[解決済み】ES6クラス変数の代替品
-
[解決済み】アロー関数(パブリッククラスフィールド)をクラスメソッドとして使用するには?
-
[解決済み] ES6クラスインスタンスのクラス名取得
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
jsを使った簡単な照明スイッチのコード
-
Vueのフォームイベントのデータバインディングの説明
-
[解決済み】最大呼び出しスタックサイズ超過エラー
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み】TypeScript-のAngular Frameworkエラー - "exportAsがngFormに設定されたディレクティブはありません"
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
nodejs unhandledPromiseRejectionWarning メッセージ
-
[解決済み] JavaScriptのプライベートメソッド
-
[解決済み] JavaScript ES6クラスにおけるプライベートプロパティ