我正在尝试构建一个简单的worker函数,该函数接受在类的原型中设置属性的配置。
假设我声明一个充当类存根的函数:
// declaration of "constructor" to fill data members from passed object
function MyClass (config) {
for (var key in config)
this[key] = config[key];
}
注意:这本身每次都很麻烦,我想为这个“构造函数”的主体设计一个模式。
但是,现在我想批量动态设置这个“类”的各种原型成员,如下所示:
ExtendPrototype(MyClass, {
func1 : function (arg1) {
},
func2 : function (arg2) {
},
...
});
这种方式看起来和感觉就像一个班级。
关键是全局函数ExtendPrototype,我尝试如下:
function ExtendPrototype (cls, protoconfig) {
for (var key in protoconfig)
cls.prototype[key] = protoconfig[key];
}
我的问题是,这会将“prototype”视为一个对象,在内部工作,真正设置各种原型成员,好像我已经将cls.prototype.myfunc = function()设置为几个独立的语句吗?
或者我必须在ExtendPrototype函数中使用“eval”做一些复杂的事情吗?
我知道现有的javascript库会做这样的事情,但对于我自己的代码,我正在尝试编写一个简单的类架构。
安迪
答案 0 :(得分:1)
这应该按预期工作。使用点表示法设置属性与使用括号表示法设置属性之间没有区别。
这是证明它的小提琴:http://jsfiddle.net/qrsNj/
P.S。您不应该以随机函数的名称以大写字母开头。这是为对象构造函数保留的约定。