javascript – 从“命名空间”字符串构建对象层次结构
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 从“命名空间”字符串构建对象层次结构,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1664字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 从“命名空间”字符串构建对象层次结构](/upload/InfoBanner/zyjiaocheng/696/d07df40879cf4f30b8e96c52aed3998c.jpg)
我正在尝试编写一个函数,该函数接受表示命名空间的字符串(例如“MyCompany.UI.LoginPage”),并将命名空间的每个段定义为对象(如果它尚不存在).例如,如果“MyCompany.UI.LoginPage”不是对象,它将评估此:
MyCompany = {};
MyCompany.UI = {};
MyCompany.UI.LoginPage = {};
我想通过枚举“namespace”(string)参数的每个字符并定义每个对象作为枚举到达句点字符来实现此目的.
如何在JavaScript中枚举字符串的字符?
解决方法:
您可以使用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
}
您将不得不改进此功能,例如您需要清理字符串…
内容总结
以上是互联网集市为您收集整理的javascript – 从“命名空间”字符串构建对象层次结构全部内容,希望文章能够帮你解决javascript – 从“命名空间”字符串构建对象层次结构所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。