这个jQuery命名空间(JavaScript)如何工作?

时间:2013-03-25 17:09:33

标签: javascript jquery

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代码,无法弄清楚它是如何工作的。它能做什么。你用一个字符串调用函数,但函数不带任何东西?整件事的目的是什么?

2 个答案:

答案 0 :(得分:3)

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

的情况

jQuery.namespace("com.fc");

arguments [0]将是“com.fc”

它似乎遍历所有参数,并将命名空间拆分为“。”

然后尝试遍历创建哈希的名称空间的窗口对象,最后它返回最右侧的哈希值。

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

jQuery.namespace(“com.fc”)。something =“yo”

或者命名空间是否已经填充了数据或函数

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

不确定为什么允许多个名称空间的体操因为它只能返回看似最后的名称。

答案 1 :(得分:2)

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

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

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

{
    com: {
        fc: {
        }
    }
}

在这种情况下,原始对象是window,因此它在窗口中创建一个空对象,使用该字符串作为如何深入到对象中的点符号指南。