Vous pouvez accéder aux caractères d'une chaîne directement par son index, en utilisant la méthode String.prototype.charAt
:
var str = "foo";
for (var i = 0; i < str.length; i++) {
alert(str.charAt(i));
}
Mais je ne pense pas que vous voulez parcourir votre chaîne d'espace de noms caractère par caractère, vous pouvez utiliser la méthode String.prototype.split
, pour obtenir un tableau contenant les niveaux d'espace de noms en utilisant le point (.
) comme séparateur, par exemple:
var levels = "MyCompany.UI.LoginPage".split('.');
// levels is an array: ["MyCompany", "UI", "LoginPage"]
Mais je pense que votre question va plus à cela, et je vais vous donner un point de départ plus avancé, j'ai fait une fonction récursive qui vous permettra de faire exactement ce que vous voulez, initialiser plusieurs niveaux d'objets imbriqués en utilisant une chaîne:
Utilisation:
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', {});
Mise en œuvre:
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
}
Vous devrez améliorer cette fonction, par exemple, vous devrez désinfectez la chaîne ...
assez des signes dollar est arrivé là? – icktoofay
Je pense qu'utiliser 'substring' pour obtenir un seul caractère est assez cher quand on a la méthode' charAt'. – CMS
Vous êtes les bienvenus @Chris, JFTR pour convertir une chaîne en un tableau de chaînes d'un caractère, vous pouvez également utiliser la méthode 'split' avec un argument de chaîne vide, par exemple:' "foo" .split (""); ' vous donnera un tableau qui ressemble à: '[" f "," o "," o "]' – CMS