2013-03-25 3 views
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 и не могу понять, как это работает &, что он делает. Вы вызываете функцию со строкой, но функция ничего не берет? Какова цель всего?Как работает это пространство имен jQuery (JavaScript)?

+0

Вы можете получить параметр как 'arguments'. –

+2

@Matt что _is_ unobfuscated ;-) – Alnitak

ответ

2

arguments - это ключевое слово в javascript, представляющее собой объект типа массива, содержащий все аргументы, переданные функции.

Функция выполняет цикл над каждым аргументом и предполагает, что каждая из них является строкой. Затем он разбивает строку на '.' и создает глубокий объект, представленный этой точечной нотацией.

Рассмотрите пустой объект {}. Эта функция работает на этом объекте с аргументом "com.fc" бы стать:

{ 
    com: { 
     fc: { 
     } 
    } 
} 

В этом случае, что исходный объект является window, поэтому он создает пустой объект в окне, используя строку в дот-нотации руководство о том, как пройдите глубоко в объект.

+0

yup :) Я согласен. –

3

аргументы представляет собой массив из всех аргументов, переданных функции

в случае

jQuery.namespace("com.fc");

аргументы [0] будет "com.fc"

он появляется перебрать все аргументы и разделить пространство имен на «.».

затем пытается пересечь оконный объект для пространств имен, создающих хэш, и, наконец, он возвращает хеш уровня уровня.

Похоже, эта функция может быть использована для установки переменной в пространства имён глубокой хэша, используя ходьбу ..

jQuery.namespace («com.fc»). Что-то = «йо»

или если пространство имен уже заполнены данными или Funcitons

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

Не знаю, почему гимнастика позволяет несколько пространств имен, как это может только вернуть то, что, казалось бы последняя.

Смежные вопросы