我这里有一些js代码链接已删除
如果您打开js控制台并且您将运行此代码snipet
var r = new TempPopupForm("xxx");
r.create();
将出现错误
TypeError: this.init is not a function
此错误表示此对象上没有实现init方法。
但事实并非如此。正如您在下面的代码中看到的那样,声明了init方法。
TempPopupForm.prototype = new PopupForm();
TempPopupForm.prototype.constructor = TempPopupForm;
TempPopupForm.superclass = PopupForm.prototype;
function TempPopupForm(name) {
this.init(name);
}
TempPopupForm.prototype.init = function(name) {
TempPopupForm.superclass.init.call(this, name);
};
我想继承定义有问题,但我无法弄清楚它是什么。
BTW有一些第三方依赖。
修改
我正在关注这篇文章,并按照我的方式订购了funcs。该命令实际上适用于其他类,但不适用于此类。 http://www.kevlindev.com/tutorials/javascript/inheritance/inheritance10.htm
答案 0 :(得分:0)
您需要重新排序函数和实例化。由于构造函数使用自己的原型方法之一进行初始化,因此它们都需要位于实例化对象的块之上。 JavaScript提升顶级函数。
试试这个 -
function TempPopupForm(name) {
this.init(name);
}
TempPopupForm.prototype = new PopupForm();
TempPopupForm.prototype.constructor = TempPopupForm;
TempPopupForm.superclass = PopupForm.prototype;
TempPopupForm.prototype.init = function(name) {
TempPopupForm.superclass.init.call(this, name);
};
var r = new TempPopupForm("xxx");
r.create();