您可以直接访问字符串的字符,它的指数使用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
}
你将不得不提高该功能,例如,你将需要消毒串...
来源
2010-02-22 04:44:25
CMS
有足够的美元符号呢? – icktoofay 2010-02-22 05:07:30
我认为使用'substring'获取只有一个字符是非常昂贵的,当我们有'charAt'方法。 – CMS 2010-02-22 05:09:00
欢迎@Chris,JFTR将字符串转换为单字符字符串数组,也可以使用带空字符串参数的split方法,例如:''foo“.split(”“);'会给你一个看起来像这样的数组:'[“f”,“o”,“o”]' – CMS 2010-02-22 05:36:33