jQuery名称空间(JavaScript)是如何工作的


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

arguments是传递给函数

的所有参数的数组。

jQuery.namespace("com.fc");

参数[0]将是"com.fc"

似乎循环遍历所有参数,并用"分隔命名空间。"

然后尝试遍历一个窗口对象,为命名空间创建一个哈希,最后返回最深层哈希。

看起来这个函数可以用来在深度哈希中设置一个命名空间变量,使用遍历…

jQuery.namespace("com.fc"),="哟"

或者名称空间已经被数据或函数填充

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

不确定为什么允许多个名称空间,因为它只能返回似乎是最后一个。

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

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

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

{
    com: {
        fc: {
        }
    }
}

在本例中,原始对象是window,因此它在window中创建了一个空对象,使用字符串作为如何深入对象的点表示法指南。

最新更新