如何";新";Javascript中的返回函数
我试图在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
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);
}
之后,我向namespacecom.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”)()中添加额外的();我是说只有新的美元(“计时器”)();不幸的是,没有;这里的优先级最高。