0
jQuery.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;
};

jQuery.namespace("com.fc");

我遇到了一些 JS 代码,但无法弄清楚它是如何工作的以及它的作用。你用字符串调用函数但函数什么都不带?整件事的目的是什么?

4

2 回答 2

3

arguments 是传递给函数的所有参数的数组

如果是

jQuery.namespace("com.fc");

参数 [0] 将是“com.fc”

它似乎遍历所有参数,并用“。”分割命名空间。

然后尝试遍历创建哈希的命名空间的窗口对象,最后它返回最深级别的哈希。

看起来这个函数可用于使用walking..在深度哈希中设置命名空间变量。

jQuery.namespace("com.fc").something = "yo"

或者如果命名空间已经填充了数据或函数

jQuery.namespace("com.fc").somefunction();
jQuery.namespace("com.fc").somevalue;

不知道为什么允许多个名称空间的体操,因为它只能返回看似最后的东西。

于 2013-03-25T17:10:49.600 回答
2

arguments是 javascript 中的关键字,它是一个类似数组的对象,包含传递给函数的所有参数。

该函数循环遍历每个参数,并假设每个参数都是一个字符串。然后它在 '.' 上拆分字符串。并创建由该点符号表示的深层对象。

考虑一个空对象{}。使用参数对该对象进行操作的函数"com.fc"将变为:

{
    com: {
        fc: {
        }
    }
}

在这种情况下,原始对象是window,因此它在 window 内创建一个空对象,使用字符串作为如何深入对象的点表示法指南。

于 2013-03-25T17:12:33.973 回答