sjl.js
function unConfigurableNamespace(ns_string, objToSearch, valueToSet) {
        var parent = objToSearch,
            shouldSetValue = typeof valueToSet !== _undefined,
            hasOwnProperty;

        ns_string.split('.').forEach(function (key, i, parts) {
            hasOwnProperty = parent.hasOwnProperty(key);
            if (i === parts.length - 1
                && shouldSetValue && !hasOwnProperty) {
                defineEnumProp(parent, key, valueToSet);
            }
            else if (typeof parent[key] === _undefined && !hasOwnProperty) {
                defineEnumProp(parent, key, {});
            }
            parent = parent[key];
        });

        return parent;
    }
function unConfigurableNamespace(ns_string, objToSearch, valueToSet) {
        var parent = objToSearch,
            shouldSetValue = typeof valueToSet !== _undefined,
            hasOwnProperty;

        ns_string.split('.').forEach(function (key, i, parts) {
            hasOwnProperty = parent.hasOwnProperty(key);
            if (i === parts.length - 1
                && shouldSetValue && !hasOwnProperty) {
                defineEnumProp(parent, key, valueToSet);
            }
            else if (typeof parent[key] === _undefined && !hasOwnProperty) {
                defineEnumProp(parent, key, {});
            }
            parent = parent[key];
        });

        return parent;
    }
function unConfigurableNamespace ( ns_string , objToSearch , valueToSet ) { var parent = objToSearch , shouldSetValue = typeof valueToSet !== _undefined , hasOwnProperty ; ns_string . split ( '.' ) . forEach ( function ( key , i , parts ) { hasOwnProperty = parent . hasOwnProperty ( key ) ; if ( i === parts . length - 1 && shouldSetValue && ! hasOwnProperty ) { defineEnumProp ( parent , key , valueToSet ) ; } else if ( typeof parent [ key ] === _undefined && ! hasOwnProperty ) { defineEnumProp ( parent , key , { } ) ; } parent = parent [ key ] ; } ) ; return parent ; }
Sets namespace string on obj and makes namespace configurable (@see Object.defineProper(ty|ties)).
@param ns_string {String} - Namespace string; E.g., 'all.your.base'
@param objToSearch {Object} - Object to set namespace string on.
@param valueToSet {*|undefined} - Value to set at end of namespace string.
@returns {*} - Value that was set at the end of the namespace propagation.
Sets namespace string on obj and makes namespace configurable (