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"});