在javascript中调用函数/对象引用时容纳任何数据类型

时间:2012-09-06 20:39:42

标签: reference javascript

我正在为工作中的重复编码任务构建一个utils库,我在这个过程中遇到了几个问题。

该库是在各种SEAF patterns之后建模的。 通用示例:

(function() {
   var A = function() {
      return new B();
   };

   var B = function() {

   }

   B.prototype = {
    /* Object Methods */
   }

   window.a = window._a = A;
})();

如果我将值'A'赋值给窗口对象,我可以通过调用_a.object_method();成功调用任何可用的原型方法。但是,如果我调用_a('selector');,它可以理解地抛出一个typeError。

反过来也是如此,如果我为窗口对象分配函数引用window.a = _a = A;我只能通过:_a('selector');调用它,并且在尝试访问任何对象方法时将抛出typeError

我的问题是,通常最好的办法是什么?如果还有任何其他SO问题可以解决此问题,请以我的方式发送这些网址。

非常感谢!

这是一个基本的小提琴,取消注释交替的线条,看看我的意思。

fiddle.

1 个答案:

答案 0 :(得分:0)

您无法拨打_a.init('HAI');,因为_a没有任何init方法,只有B的实例(而_a只是参考到A)。

但是,在致电_a()后,您将获得B的实例。所以,你可以这样做:

_a('HAI').init();