好吧,首先如果您不了解基于原型的继承,那么我建议您学习一下。其实很简单。
其次,请不要以错误的方式理解这一点——你的代码让我厌恶。我知道你来自古典背景,我尊重你所做的努力。但是,说真的,即使我得到报酬,我也不想阅读您的代码。
这就是我会做的(如果我的程序不是你要找的,请纠正我,但我真的不知道你的代码中发生了什么):
// baseClass.js
function BaseClass() { // class BaseClass
var extendedObject = new Extension;
}
// extension.js
Extension.prototype = new BaseClass; // Extension extends BaseClass
Extension.prototype.constructor = Extension; // reset the constructor property
function Extension() { // class Extension
// some private variables
var privateVar = null;
function privateFunction() {}
// some public properties
this.publicVar = null;
this.publicFunction = function () {};
}
此外,由于您来自经典背景,它可能会帮助您编写更符合经典继承风格的代码。阅读这个答案。这会对你有很大帮助。
编辑:使用我的脚本,您可以在 JavaScript 中创建类,如下所示。
baseClass.js
:
/*
class BaseClass {
var extension;
function constructor() {
extension = new Extension;
}
}
*/
var BaseClass = new Class(function () {
var extension;
function constructor() {
extension = new Extension;
}
return constructor;
});
extension.js
:
/*
class Extension extends BaseClass {
var secret;
function constructor() {
secret = null;
}
this.getSecret = function () {
return secret;
};
this.setSecret = function (newSecret) {
secret = newSecret;
};
}
*/
var Extension = new Class(function () {
var secret;
function constructor() {
secret = null;
}
this.getSecret = function () {
return secret;
};
this.setSecret = function (newSecret) {
secret = newSecret;
};
return constructor;
}, BaseClass);
你可以摆弄小提琴。