动态javascript原型扩展

dynamic javascript prototype extension

本文关键字:扩展 原型 javascript 动态      更新时间:2023-09-26

我正在尝试构建一个简单的辅助函数,该函数需要在类的原型中设置属性的配置。

假设我声明了一个用作类存根的函数:

// 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) {
    },
    ...
});

这样一来,它看起来和感觉都像一门课。

关键是全局函数ExtendePrototype,我尝试如下:

function ExtendPrototype (cls, protoconfig) {
    for (var key in protoconfig)
        cls.prototype[key] = protoconfig[key];
}

我的问题是,通过将"prototype"视为一个对象,完全在内部工作,真正设置各种原型成员,就像我将cls.prototype.myfunc=function()设置为几个独立的语句一样,这会起作用吗?

或者我必须在我的ExtendePrototype函数中使用"eval"来做一些复杂的事情?

我知道现有的javascript库是这样做的,但对于我自己的代码,我正在尝试编写一个简单的类体系结构。

Andy

这应该可以按预期工作。用点表示法设置属性和用括号表示法设置它们没有区别。

以下是证明这一点的小提琴:http://jsfiddle.net/qrsNj/


p.S.随机函数的名称不应该以大写字母开头。这是为对象构造函数保留的约定。