动态函数调用原型函数

时间:2015-05-29 06:43:00

标签: javascript

我必须在函数中制作一堆.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

的范围内

2 个答案:

答案 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;
}