我必须在函数中制作一堆.prototype
声明,并希望添加一些动态来减少代码的大小。
这是我需要做的一些伪代码:
window.myClass = function(){
var object_type = getObjectType();
if (object_type === 'NodeList')
{
NodeList.prototype.func_name = function(){
//some code
}
}
if (object_type === 'HTMLCollection')
{
HTMLCollection.prototype.func_name = function(){
//the same code again
}
}
}
我想改变这个,所以我可以使这些声明变得动态,有点像这样:
window.myClass = function(){
var object_type = getObjectType();
object_type.prototype.func_name = function(){
//some code
}
}
这可能吗?
修改
我忘了提及我希望将所有功能都放在window.myClass
答案 0 :(得分:1)
在你的情况下,你可以简单地做
window[object_type].prototype[func_name] = function(){...
但请注意,您似乎参与了modifying objects you don't own。您的应用程序可能有更好的设计。
答案 1 :(得分:0)
如果没有详细了解您要完成什么,或者它是否是一个好主意或者有更好的方法,只需根据您发布的代码,您需要做的就是定义"一些代码"作为一种功能并将其分配给您想要的任何内容:
window.myClass = function(){
function someCode() { /* some code */ }
var object_type = getObjectType();
if (object_type === 'NodeList')
{
NodeList.prototype.func_name = someCode;
}
if (object_type === 'HTMLCollection')
{
HTMLCollection.prototype.func_name = someCode;
}
}
但你真的不需要if语句,因为你可以做到
window.myClass = function(){
function someCode() { /* some code */ }
var object_type = getObjectType();
window[object_type].prototype.func_name = someCode;
}