首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个JavaScript是什么意思?

这个JavaScript是什么意思?
EN

Stack Overflow用户
提问于 2011-08-11 17:17:22
回答 4查看 216关注 0票数 4

我正在开发一个遗留的应用程序,所有的JS对我来说都很神奇。

下面是几行神秘的代码,它们被加载到所有代码中,我完全不知道它们在做什么。

代码语言:javascript
复制
var i2b2 = {sdx:{TypeControllers:{},Master:{_sysData:{}}},events:{},hive:{cfg:{},helpers:{},base_classes:{}},h:{}};  
if (undefined==i2b2.hive) { i2b2.hive = {}; }     
i2b2.hive.tempCellsList = [
        { code: "PM",
          forceLoading: true 
        },
        { code: "ONT"   },
        { code: "CRC"   },
        { code: "WORK"},
        { code: "SHRINE"},
        { code: "PLUGINMGR",
           forceLoading: true,
           forceConfigMsg: { params: [] }
        }
    ];

还有更多的varif语句,但它们对不同的变量做同样的事情。

请帮我解开这个谜团。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-11 17:36:22

第一行使用嵌套的对象文字初始化i2b2

var obj = {};是编写var obj = new Object();的一种较短的方式

一个简单的对象文字将是

代码语言:javascript
复制
var simpleObject = {
    property1: "Hello",
    property2: "MmmMMm",
    property3: ["mmm", 2, 3, 6, "kkk"],
    method1: function() {
        alert("my method")
    }
};

嵌套的将是

代码语言:javascript
复制
var rectangle = {
    upperLeft: {
        x: 2,
        y: 2
    },
    lowerRight: {
        x: 4,
        y: 4
    }
};

你的是经典作品。

代码语言:javascript
复制
var i2b2 = {
    sdx: {
        TypeControllers: {},
        Master: {
            _sysData: {}
        }
    },
    events: {},
    hive: {
        cfg: {},
        helpers: {},
        base_classes: {}
    },
    h: {}
};

第二行应该是IMHO

代码语言:javascript
复制
i2b2.hive = i2b2.hive || {};

这就是说,如果hive未定义,则创建一个新对象。

最后几行创建对象hive的属性tempCellsList。(请注意,hive反过来又是i2b2的属性)最后,一个新的对象数组被添加到属性tempCellsList

票数 4
EN

Stack Overflow用户

发布于 2011-08-11 17:31:42

这段javascript代码创建了一个名为ib2b的变量,该变量具有许多属性:sdxeventshive等。这些属性包含更多复合对象,如下所示。

其思想是这个全局对象可以从其他javascript代码中引用,并且它存储客户端应用程序的全局配置。

票数 1
EN

Stack Overflow用户

发布于 2011-08-11 17:36:52

我不太确定,你到底不明白什么。上面的代码有两个“奇怪”的地方,我会试着解释一下,但如果这还不够,你需要更好地描述你不理解的东西:

未定义代码检查is is未定义,如果是,则将其设置为空对象。由于该属性显然是在前一行中设置的,因此我猜测这段代码是动态生成的,并且在JavaScript代码中定义了一些逻辑(例如此检查),即使它可以(应该吗?)作为服务器端的code.

  1. undefined==i2b2.hive是测试“不确定性”的一种糟糕/错误的方式,因为undefined不是JavaScript.This中的保留字,因为undefined只是一个碰巧未定义的变量。相反,应该使用if (typeof i2b2.hive == "undefined") ...或只使用if (i2b2.hive) ....
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7023500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档