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中创建了一个空对象,使用字符串作为如何深入对象的点表示法指南。