1

RequireJS を使用してアプリケーションを構築しており、一元化されたロガーが必要です。これはクラス構造に要約されますが、具体的に例を挙げています。サブクラスはどのようにして親のエラー ログ メソッドを呼び出すことができますか?

ここに私のアプリスクリプトがあります:

define(['jquery', 'js/renderer', 'js/logger'], function($, Renderer, Logger) {
  var App = Class.extend({
    init: function(baseUrl) {
      this.log = new Logger();
      this.renderer = new Renderer();
    }
  });
  return App;
});

レンダラー スクリプトは次のとおりです。

define(['jquery'], function ($) {
  try() {
    var Renderer = Class.extend({
      init: function() {
        vor = {}; // bad script
      }
    });
    return Renderer;
  } catch(e) {
    [How to throw the error to App]
  }
});

クラス定義の周りに try/catch を配置するには抽象的すぎますか? 説明書の周りに置くだけでいいですか?例えば:

define(['jquery'], function ($) {
    var Renderer = Class.extend({
      init: function() {
        try() {
          vor = {}; // bad script
        } catch(e) {
           [How to throw the error to App]
        }
      }
    });
    return Renderer;
});

私が検討しているオプションの 1 つは、app クラスをレンダラー init の引数として渡すことですが、それは悪い習慣ですか? たとえば、次のようにアプリ スクリプトを更新します。

this.renderer = new Renderer(this);

次に、レンダラー スクリプトで次のように記述します。

....
init: function(app) {
   app.log.error({message:"My Error"});
4

0 に答える 0