Webuploader源码阅读记录

webuploader自带的exports

// 将所有modules,将路径ids装换成对象。
        exportsTo = function( obj ) {
            var key, host, parts, part, last, ucFirst;

            // make the first character upper case.
            ucFirst = function( str ) {
                return str && (str.charAt( 0 ).toUpperCase() + str.substr( 1 ));
            };

            for ( key in modules ) {
                host = obj;
				
                if ( !modules.hasOwnProperty( key ) ) {
                    continue;
                }
				
				//分割modules中带有 / 的moduleid 并按照上下级关系
				//组合成对象
				//例如 
				//Runtime/Runtime
				//Runtime/Client
				//结果就是 
				// {
				//Runtime: {
				//	Runtime: obj,
				//	Client: obj
				//}
                parts = key.split('/');
                last = ucFirst( parts.pop() );

                while( (part = ucFirst( parts.shift() )) ) {
                    //这里的host就是传入的obj 有相关part就赋给对应属性
                    //没有就赋给{}
                    host[ part ] = host[ part ] || {};
                    //这里的host指向obj下的某一个part  对这个part修改
                    //就表示对obj修改
                    host = host[ part ];
                }
				//这里的host指向obj的对应part  将对应的module赋给host
				//就等于赋给obj下的part  
				//因为是同一个引用
                host[ last ] = modules[ key ];
            }

            return obj;
        },

你可能感兴趣的:(源码探究)