我目前正在尝试将现有的服务器端 JavaScript API 从现有的手动复制和粘贴继承系统迁移到更好、更可靠的系统。不能使用纯原型,因为对象的状态(变量)也必须被继承,并且不能在父对象中被覆盖。
所以我正在考虑使用这里描述的 John Reisig 的一个好的解决方案:http: //ejohn.org/blog/simple-javascript-inheritance/
哪个工人对我的情况很好。
我现在面临的唯一挑战是大多数文档框架不会处理这样构造的对象(或者我只是不知道如何告诉它们)。所以我的问题是,我如何记录这样的类:
namespace.ClassA = Class.extend({
name : "",
init: function(name){
this.name = name;
}
});
namespace.ClassB = ClassA.extend({
sayName : function(){
console.log(this.name);
}
});
我更喜欢 JsDoc,但我想不出用 JsDoc 记录这种类的方法。我还尝试了 NaturalDocs,它可以工作,但我真的不希望所有这些额外的 python 东西都在构建过程中。
我认为我遇到的主要问题是命名空间
例如:
/** @memberof namespace**/
namespace.ClassB = ClassA.extend(
/** @lends ClassB.prototype **/
{
/** @constructs **/
init : function(){
},
sayName : function(){
console.log(this.name);
}
});
不会在命名空间“命名空间”中包含或显示 ClassB