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.Control,它是 的超类goog.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 回答