namespace
//"window" //"window.a" //"a" //"a.b.c" //any custom context
| function (a,b,c,d){c=a.replace(/^window.?/,"").split("."),b=b||window;while(d=c.shift())b=b[d]=b[d]||{};return b} |
| function( | |
| a, //input string | |
| b, //context | |
| c, //(placeholder) | |
| d //(placeholder) | |
| ){ | |
| c = a.replace(/^window.?/, '').split('.'); //replace ^window and split | |
| b = b || window; //default context | |
| while(d = c.shift()) b = b[d] = b[d] || {}; | |
| return b; | |
| } |
| { | |
| "name": "namespace", | |
| "description": "namespace", | |
| "keywords": [ | |
| "namespace", | |
| "javascript", | |
| "斯人", | |
| "leecade" | |
| ] | |
| } |
How about using the replace for the loop?
function (a,b){b=b||window;a.replace(/^window\.|([^\.]+)/g,function(c,d){b=d?b[d]||{}:b});return b}