如何在Google Closure中使用var_args调用父类的构造函数?

时间:2014-04-10 02:02:25

标签: javascript class inheritance constructor google-closure

我有这个班级

/**
 * @constructor
 * @param {...*} var_args
 */
var Map = function(var_args) {
    // insert all pairs of parameters as objects in the map
};

/**
 * @constructor
 * @extends {Map}
 * @param {...*} var_args
 */
var ExtendedMap = function(var_args) {
    goog.base(this, var_args); //<-- this obviously doesn't work!
};
goog.inherits(ExtendedMap, Map);

问题是ExtendedMap需要扩展一个类(Map),它的构造函数已经有一个var_args。如何在不弄乱父级构造函数的情况下添加自己的构造函数?我正在使用 google-closure编译器

1 个答案:

答案 0 :(得分:1)

您不需要使用goog.base,这只是一种让事情变得简单的方法。在这种情况下,您可以直接调用Map的构造函数并使用apply而不是调用:

/**
 * @constructor
 * @extends {Map}
 * @param {...*} var_args
 */
var ExtendedMap = function(var_args) {
   Map.apply(this, arguments);
};
goog.inherits(ExtendedMap, Map);