1

Google Closure JavaScript で goog.ui.Button のサブクラスを作成しました。

/**
 * @fileoverview This button makes a new widget.
 * @author David Faux
 */

goog.provide('app.ui.NewWidgetButton');

goog.require('goog.ui.Button');



/**
 * Button for creating a new widget.
 * @constructor
 * @param {goog.ui.ButtonRenderer=} opt_renderer Optional renderer used to
 *    render or decorate the button.
 * @param {goog.dom.DomHelper=} opt_domHelper Optional DOM hepler, used for
 *    document interaction.
 * @extends {goog.ui.Button}
 */
app.ui.NewWidgetButton = function(opt_renderer, opt_domHelper) {
  goog.base(
    this,
    /** @type {goog.ui.ControlContent} */ 'New Widget',
    opt_renderer,
    opt_domHelper);
}
goog.inherits(app.ui.NewWidgetButton, goog.ui.Button);

ただし、このボタンを でインスタンス化するとvar newButton = app.ui.NewWidgetButton();、Chrome コンソールでエラーが発生します。

`Uncaught TypeError: Object #<Object> has no method 'setContentInternal'`

メソッド を調べたところ、のスーパークラスである クラス のsetContentInternalメソッドのようで、なぜこのメソッドが定義されていないのかわかりません。goog.ui.Controlgoog.ui.Button

4

1 に答える 1

1

のインスタンス化にキーワードnewButtonがありません。newキーワードを追加するとnew、エラーが修正されます。

var newButton = new app.ui.NewWidgetButton();

Closure Compiler フラグ--warning_level=VERBOSEを設定して、次のようなエラーを生成します。

警告 - コンストラクター関数 (new:app.ui.NewWidgetButton, (goog.ui.ButtonRenderer|null)=, (goog.dom.DomHelper|null)=): undefined は「new」キーワードで呼び出す必要があります

于 2012-07-22T06:32:44.320 に答える