182

ES6クラスインスタンスからクラス名を取得する「調和のとれた」方法はありますか? 以外

someClassInstance.constructor.name

現在、私は Traceur の実装を当てにしています。また、Babel には polyfill があるようですがFunction.name、Traceur にはありません。

要約すると、ES6/ES2015/Harmony では他に方法がなく、ES.Next では ATM は期待されていません。

縮小されていないサーバー側アプリケーションには有用なパターンを提供する可能性がありますが、ブラウザ/デスクトップ/モバイル向けのアプリケーションでは望ましくありません。

Babelcore-jspolyfillFunction.nameを使用します。必要に応じて、Traceur および TypeScript アプリケーション用に手動でロードする必要があります。

4

4 に答える 4

2

バベル転写用(縮小前)

で Babel を使用している場合@babel/preset-env、クラス定義を関数に変換せずに保持することができます (constructorプロパティが削除されます) 。

で、この構成との古いブラウザの互換性を削除できますbabel.config / babelrc

{
  "presets": [
    ["@babel/preset-env", {"targets": {"browsers": ["> 2%"]}}]
  ]
}

に関する詳細情報targets: https://babeljs.io/docs/en/babel-preset-env#targets

バベル縮小用(トランスパイル後)

今のところ簡単な解決策はないようです...マングリングの除外を検討する必要があります。

于 2020-05-26T16:06:21.507 に答える