Вы можете получить доступ к символам строки напрямую по ее индексу, используя метод String.prototype.charAt
:
var str = "foo";
for (var i = 0; i < str.length; i++) {
alert(str.charAt(i));
}
Но я не думаю, что вы хотите проходить строку пространства имен символ за символом, вы можете использовать метод String.prototype.split
, чтобы получить массив, содержащий уровни пространства имен с использованием символа точки (.
) в качестве разделителя, например:
var levels = "MyCompany.UI.LoginPage".split('.');
// levels is an array: ["MyCompany", "UI", "LoginPage"]
Но я думаю, что ваш вопрос идет дальше к этому, и я дам вам более сложную отправную точку, я сделал рекурсивную функцию, которая позволит вам делать именно то, что вы хотите, инициализировать несколько вложенных объектов уровни с использованием строки:
Использование:
initializeNS('MyCompany.UI.LoginPage');
// that will create a MyCompany global object
// you can use it on an object to avoid globals also
var topLevel = {};
initializeNS('Foo.Bar.Baz', topLevel);
// or
var One = initializeNS('Two.Three.Four', {});
Реализация:
function initializeNS(ns, obj) {
var global = (function () { return this;})(), // reference to the global object
levels = ns.split('.'), first = levels.shift();
obj = obj || global; //if no object argument supplied declare a global property
obj[first] = obj[first] || {}; // initialize the "level"
if (levels.length) { // recursion condition
initializeNS(levels.join('.'), obj[first]);
}
return obj[first]; // return a reference to the top level object
}
Вам нужно улучшить эту функцию, например, вам нужно очистить строку ...