标签:code 个数 eof nts 生成 功能 nbsp turn 变量
var namespace = (function() { // 数据存储和读取的对象 var obj = {}; return function(path, val) { // 模拟函数的重载 if(arguments.length == 2) { //实参个数为2 则为存储数据 // 划分路径 var pathArr = path.split(‘.‘); // 引用obj变量 var obj1 = obj; // 设置最后的键 var index = pathArr.pop(); // 循环产生对象 for(var i = 0;i < pathArr.length; i++) { var value = pathArr[i]; // 判断 if(obj1[value] === undefined) { // 生成一个对象 obj1[value] = {}; // 将obj1指向新生成的对象 obj1 = obj1[value]; }else if(typeof obj1[value] === ‘object‘ && obj1[value] !== null) { // 将obj1指向新生成的对象 obj1 = obj1[value]; }else { // obj1有值,但不是一个对象 console.log(‘已经有值‘); return; } } // 进行赋值操作 obj1[index] = val; console.log(obj); }else if(arguments.length == 1) { // 实参个数为1 则为读取数据 // 划分路径 var pathArr = path.split(‘.‘); // 引用obj变量 var obj1 = obj; // 设置最后的键 var index = pathArr.pop(); // 循环读取对象 for(var i = 0; i < pathArr.length; i++) { var value = pathArr[i]; obj1 = obj1[value]; if(!(typeof obj1 === ‘object‘ && obj1 !== null)) { console.log(‘读取路径不对‘); return; } } // 返回对象的值 return obj1[index]; } } })(); namespace(‘a.b.c‘, 111); console.log(namespace(‘a.b.c‘));
标签:code 个数 eof nts 生成 功能 nbsp turn 变量
原文地址:https://www.cnblogs.com/yess/p/12161760.html