属性myMethod从未在myModel上定义

时间:2018-12-19 23:16:04

标签: google-closure-compiler

按照here中概述的闭包编译器说明,我有

/**
 * ctor
 * @constructor
*/
function myModel() {
    var self = this;

    self.myMethod= function(a,b,c) {...}
    ...
}

window['myModel'] = myModel;
myModel['myMethod'] = myModel.myMethod;

闭包编译器以零错误完成,并且已编译的代码以如下代码段结尾:

window.myModel=b;b.myMethod=b.B;

但我收到以下警告:

WARNING - Property myMethod never defined on myModel
myModel['myMethod'] = myModel.myMethod;
                              ^^^^^^^^

很明显我错过了一些东西,但是我不知道是什么。为什么要警告?我如何摆脱它?

1 个答案:

答案 0 :(得分:0)

在您的示例中,您正在myMethod的实例上定义myModel属性。

(new MyModel()).myMethod; // this exists
MyModel.myMethod; // this does not exist

要导出实例方法,请使用prototype进行访问。

myModel.prototype['myMethod'] = myModel.prototype.myMethod;