js中use或者using方法

看Vue.use方法,想起了以前工作中别人用过的use方法。

var YANMethod = {
    using:function() {
        var a = arguments, o = this, i = 0, j, d, arg, isExist;
        arg = a[0], isExist = a[1];
        if (arg && arg.indexOf('.')) {
            d = arg.split('.');
            for (j = (d[0] == 'YAN') ? 1 : 0; j < d.length; j++) {
                if(!o[d[j]] && isExist) return null;
                o[d[j]] = o[d[j]] || {};
                o = o[d[j]];
            }
        } else {
            o[arg] = o[arg] || {};
        }
        return o;
    },
    /*--
        用新Cookie方法,但是兼容老的东西
        -ver 2014-04-22
    */
    cookie:function(name, value, options) {
        if(typeof value==='undefined'){
            return Cookie.get(name);
        }
        if(options){
            options.exp = typeof options.expires==='number' ? options.expires * 24 :
                options.expires; //原来的cookie是按天算的
        }
        Cookie.set(name, value, options);
    },
    
    /**
     *JSON序列化,如果传入的是字符串则反序列化为对象;若传入的是对象则反序列化为字符串
     */
    json:function(value){
        if(typeof value==="string"){
            return this.jsontoObject(value);
        }else{
            return this.jsontoJSON(value);
        }
    },
    jsontoJSON:function(object){
        var type = typeof object;
        if ('object' == type) {
            if (Array == object.constructor) type = 'array';
            else if (RegExp == object.constructor) type = 'regexp';
            else type = 'object';
        }
        switch (type) {
            case 'undefined':
            case 'unknown':
                return;
            break;
            case 'function':
            case 'boolean':
            case 'regexp':
                return object.toString();
            break;
            case 'number':
                return isFinite(object) ? object.toString() : 'null';
            break;
            case 'string':
                return '"' + object.replace(/(\\|\")/g, "\\$1").replace(/\n|\r|\t/g, function() {
                    var a = arguments[0];
                    return (a == '\n') ? '\\n': (a == '\r') ? '\\r': (a == '\t') ? '\\t': ""
                }) + '"';
            break;
            case 'object':
                if (object === null) 
                    return 'null';
                var results = [];
                for (var property in object) {
                    var value = this.jsontoJSON(object[property]);
                    if (value !== undefined) 
                        results.push(this.jsontoJSON(property) + ':' + value);
                }
                return '{' + results.join(',') + '}';
            break;
            case 'array':
                var results = [];
                for (var i = 0; i < object.length; i++) {
                    var value = this.jsontoJSON(object[i]);
                    if (value !== undefined) 
                        results.push(value);
                }
                return '[' + results.join(',') + ']';
            break;
        }
    },
    
    jsontoObject:function(strjson){
        return eval("(" + strjson + ")");
    }
};
var addFunToYAN = function(functionName,func){
    if(typeof(func) == 'function')
        YAN[functionName] = func;
};
for(var m in YANMethod){
    if(typeof(YAN[m]) == 'undefined'){
        addFunToYAN(m,YANMethod[m]);
    }
}
$.extend(YAN.using("Plugin"),{

});
$.extend(YAN.using("Utils"),{
    getQuery:function(name){
          var paramList = location.search.replace("?","").split("&");
          for(var i = 0 ; i < paramList.length ; i++)
          {
              if(paramList[i].split("=")[0] == name){
                  return paramList[i].substring(paramList[i].indexOf("=") + 1,paramList[i].length);
              }
          }
          return null;
    }
});
var Plugin = YAN.using('Plugin');

Plugin.AD = ad;
Plugin.AD.getFlashAd();

window.AD || (window.AD = YAN.using('Plugin').AD);

Vue.use()

http://www.cnblogs.com/dupd/p/6716386.html

转载于:https://www.cnblogs.com/coding4/p/7510867.html

你可能感兴趣的:(javascript,java,json)