不在浏览器中时的Javascript全局对象

不在浏览器中时的Javascript全局对象,javascript,Javascript,我有下面的脚本,它在浏览器中运行良好,但在没有全局对象“窗口”的ASP脚本上运行时就不行了。如何将其更改为使用全局对象而不是窗口 var $ = {} $.namespace = function() { var a=arguments, o=null, i, j, d; for (i=0; i<a.length; i=i+1) { d=a[i].split("."); o=window; for (j=0; j<d.

我有下面的脚本,它在浏览器中运行良好,但在没有全局对象“窗口”的ASP脚本上运行时就不行了。如何将其更改为使用全局对象而不是窗口

var $ = {}

$.namespace = function() {
    var a=arguments, o=null, i, j, d;
    for (i=0; i<a.length; i=i+1) {
        d=a[i].split(".");
        o=window;
        for (j=0; j<d.length; j=j+1) {
            o[d[j]]=o[d[j]] || {};
            o=o[d[j]];
        }
    }
    return o;
};

谢谢

我想你可以使用这个代码

var $ = {}
var $this = this;
$.namespace = function() {
    var a=arguments, o=null, i, j, d;
    for (i=0; i<a.length; i=i+1) {
        d=a[i].split(".");
        o=$this;
        for (j=0; j<d.length; j=j+1) {
            o[d[j]]=o[d[j]] || {};
            o=o[d[j]];
        }
    }
    return o;
};
var$={}
var$this=这个;
$.namespace=function(){
变量a=参数,o=null,i,j,d;

为了(i=0;i不知道asp脚本,但在node.js中有
global
变量,因此您可以使用
o=window | | global;
是否要在窗口范围外声明变量?抱歉,我没有解释函数的用法。我编辑了我的原始帖子,抱歉。您的解决方案在最后一行myApp.test.myString中不起作用=“hello world”;虽然$.namespace(“myApp.test”);至少运行得很干净。谢谢您可以使用“this”引用全局对象。如果您共享所需的输出,会更好。我已经更新了代码。
var $ = {}
var $this = this;
$.namespace = function() {
    var a=arguments, o=null, i, j, d;
    for (i=0; i<a.length; i=i+1) {
        d=a[i].split(".");
        o=$this;
        for (j=0; j<d.length; j=j+1) {
            o[d[j]]=o[d[j]] || {};
            o=o[d[j]];
        }
    }
    return o;
};