我在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
的超类,所以我迷惑为什么这个方法未定义。
答案 0 :(得分: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)=):应使用“new”关键字调用undefined < / p>