如何";新";Javascript中的返回函数

如何";新";Javascript中的返回函数,javascript,function,Javascript,Function,我试图在Javascript中模拟名称空间特性 var com = {}; com.domain = {}; com.domain.system = {}; com.domain.net = {}; com.domain.net.ip = {}; com.domain.net.ip.tcp = {}; com.domain.net.ip.udp = {}; co

我试图在Javascript中模拟名称空间特性

var com                   = {};
com.domain                = {};
com.domain.system         = {};
com.domain.net            = {};
com.domain.net.ip         = {};
com.domain.net.ip.tcp     = {};
com.domain.net.ip.udp     = {};
com.domain.net.ip.ssl     = {};
com.domain.util           = {};
com.domain.util.timer     = {};
com.domain.plugins        = {};
com.domain.session        = {};
com.domain.io             = {};
com.domain.algorithm      = {};
com.domain.debug          = {};
这是名称空间声明。稍后我将向这些名称空间添加函数

这是我的选择器功能:

为了方便地使用名称空间,我添加了一个名为$的函数。此函数将遍历com中的所有名称空间。如果所选名称存在,则返回对象

function $ (selector) {
  function digger (namespace, selector) {
    for (var prop in namespace) {
      if (typeof namespace[prop] == "array" || typeof namespace[prop] == "object") {
        if (prop == selector) {
          return namespace[prop];
        }
        var dig = digger(namespace[prop], selector);
        if (dig != null) {
          return dig;
        }
      } else {
        if (prop == selector) {
          return namespace[prop];
        }
      }
    }
  }
  return digger (com, selector);
}
之后,我向namespace
com.doamin.util
添加了一个计时器

com.domain.util.timer = function () {
    this._handle = new InnerObj.SystemTimer(io);
    return this;
};

com.domain.util.timer.prototype.expiresFromNow = function (seconds, cbHandler) { 
    this._handle.ExpiresFromNow (seconds, cbHandler);
};

com.domain.util.timer.prototype.wait = function (seconds, cbHandler) { 
    this._handle.Wait (seconds, cbHandler);
};

com.domain.util.timer.prototype.expiresAt = function (seconds, cbHandler) { 
    this._handle.Wait (seconds, cbHandler);
};

com.domain.util.timer.prototype.cancel = function () {
    this._handle.Cancel ();    
};
用法:

 1. var timer = new com.domain.util.timer ();            OK
    timer.expiresAt (1, {});                             OK
 2. var func = $("timer");                               OK 
    var timer =  new func ();                            OK 
    timer.expiresAt (1, {});                             OK
但是但是但是但是

var timer = new $("timer") ();                           NG
有人能告诉我为什么最后一个
new
函数不起作用吗?

试试
var timer=new($(“timer”)()


您的问题不清楚,但我想既然
$(“timer”)
返回一个函数,您需要的是
$(“timer”)
结果的新实例,而不是$()的新实例。

JavaScript!=JAVA您确定要这样做吗?您收到了什么消息?也许这是我找到的唯一命名函数的方法。:)用法有错误。已经修复了。是否以任何方式不需要在new($(“timer”)()中添加额外的();我是说只有新的美元(“计时器”)();不幸的是,没有;这里的优先级最高。