动态javascript原型扩展
dynamic javascript prototype extension
我正在尝试构建一个简单的辅助函数,该函数需要在类的原型中设置属性的配置。
假设我声明了一个用作类存根的函数:
// 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.随机函数的名称不应该以大写字母开头。这是为对象构造函数保留的约定。
相关文章:
- “util.inherits”和在NodeJS中扩展原型之间的区别
- JavaScript:动态扩展原型是一种糟糕的做法
- 使用第二个原型扩展对象
- 如何在Typescript中添加具有扩展原型的文件
- 如何扩展使用原型的javascript模块
- 在ECMAScript 5之后重新扩展本机原型
- 具有扩展原型的JavaScript本地对象;在“;环
- 如何使用Javascript扩展对象'的原型使用声明中的变量
- document.registerElement-为什么我们需要同时指定'原型'和'扩展'
- 在Javascript中扩展继承的原型方法
- Javascript扩展对象's原型,但保留旧原型
- 原型&在SAPUI5(Component.js)中进行扩展
- 用原型扩展Javascript Form对象
- 如何为特定的javascript对象扩展数组或对象原型
- 如何在完全独立的.js文件中覆盖/扩展原型.js类
- 希望扩展原型方法
- 使用装饰器扩展原型
- 覆盖和扩展原型
- 扩展原型方法
- jQuery是否保证它与Array或Object的扩展原型的兼容性?