1

次のように「baseScreen」という名前の基本クラスがあります。

digient.casino.ui.baseScreen = function() {
    goog.debug.Logger.getLogger('demo').info('baseScreen');
    this.background                             =   goog.dom.createDom('div', {'class': 'backgroundHolder'}, '');
    console.log(this);
}

digient.casino.ui.baseScreen.background         =   null;

digient.casino.ui.baseScreen.prototype.load     =   function() {
    var self                                    =   this;
    goog.debug.Logger.getLogger('demo').info('baseScreen : load');
    goog.dom.appendChild(document.body, this.background);
    <!-- screen setup code goes here -->
};

digient.casino.ui.baseScreen.prototype.resize  =   function(newSize) {
    goog.debug.Logger.getLogger('demo').info('baseScreen : resize');
};

onLoad、baseScreenを次のようにロードすると

var sc = new digient.casino.ui.baseScreen();
sc.load();

その正常に動作します。

registerScreen次に、次のような名前の画面を導き出します。

digient.casino.ui.registerScreen = function() {                                                     
    goog.debug.Logger.getLogger('demo').info('registerScreen');                                     
    digient.casino.ui.baseScreen.call();
};                                                                                                  
goog.inherits(digient.casino.ui.registerScreen, digient.casino.ui.baseScreen); 

のオブジェクトを読み込もうとするregisterScreenと、追加しようとした行にエラーがスローされ、this.background4行目document.bodyで奇妙なことにまたはobjectの代わりにobjectがconsole.log(this)出力されます。windowbaseScreenregisterScreen

私のコードの何が問題になっていますか?派生クラスでロードをオーバーライドし、サイズを変更する必要がありますか?(これを試しましたが、失敗しました)または他の問題?

4

2 に答える 2

4

または、@felix-klingで言及されている呼び出しを次のように置き換えることもできます。

goog.base(this);

これはまったく同じことをします。

ドキュメントからのgoog.baseに関する1つのメモ:

これがコンストラクターから呼び出される場合、これは引数1-Nを使用してスーパークラスコンストラクターを呼び出します。これがプロトタイプメソッドから呼び出される場合は、メソッドの名前をこの関数の2番目の引数として渡す必要があります。そうしないと、ランタイムエラーが発生します。

も参照してください:

于 2013-10-09T05:27:58.807 に答える
2

baseScreen現在のregisterScreenインスタンスを呼び出す必要があります。

digient.casino.ui.baseScreen.call(this);

それ以外の場合、関数呼び出しはと同等digient.casino.ui.baseScreen()であるためthis、グローバルオブジェクトを参照しますwindow

于 2012-06-25T12:45:34.100 に答える