gpt4 book ai didi

javascript - 动态 JavaScript 原型(prototype)扩展

转载 作者:行者123 更新时间:2023-11-29 15:47:46 26 4
gpt4 key购买 nike

我正在尝试构建一个简单的辅助函数,它接受要在类原型(prototype)中设置的属性配置。

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

// declaration of "constructor" to fill data members from passed object
function MyClass (config) {
for (var key in config)
this[key] = config[key];
}

注意:这本身每次都是一件麻烦事,我想为这个“构造函数”的主体设计一个设计模式。

但是,现在我想批量动态设置这个“类”的各个原型(prototype)成员如下:

ExtendPrototype(MyClass, {
func1 : function (arg1) {
},

func2 : function (arg2) {
},

...
});

这样一来,它看起来和感觉起来就像一个类。

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

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

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

或者我是否必须在我的 ExtendPrototype 函数中使用“eval”做一些复杂的事情?

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

安迪

最佳答案

这应该按预期工作。使用点表示法设置属性与使用括号表示法设置属性之间没有区别。

这是证明它的 fiddle :http://jsfiddle.net/qrsNj/


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

关于javascript - 动态 JavaScript 原型(prototype)扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9085097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com