2022-01-28 16:28:11 转为jq插件模式 不在区分版本 /** JSON 值可以是: 数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true 或 false) 数组(在方括号中) 对象(在花括号中) null 对一个值使用typeof操作符可能返回下列某个字符串: 'undefined'——如果这个值未定义; 'boolean'——如果这个值是布尔值; 'string'——如果这个值是字符串; 'number'——如果这个值是数值; 'object'——如果这个值是对象或null; 'function'——如果这个值是函数; js中 urlencode 编码 encodeURIComponent(编码的具体内容) 解码 decodeURIComponent(解码码的具体内容) */ /* 自定义jquery函数,完成将form 数据转换为 json格式 */ $.fn.serializeJson=function(){ var serializeObj={}; var array=this.serializeArray(); // var str=this.serialize(); $(array).each(function(){ // 遍历数组的每个元素 if(serializeObj[this.name]){ // 判断对象中是否已经存在 name,如果存在name if($.isArray(serializeObj[this.name])){ serializeObj[this.name].push(this.value); // 追加一个值 hobby : ['音乐','体育'] }else{ // 将元素变为 数组 ,hobby : ['音乐','体育'] serializeObj[this.name]=[serializeObj[this.name],this.value]; } }else{ serializeObj[this.name]=this.value; // 如果元素name不存在,添加一个属性 name:value } }); return serializeObj; }; /* JavaScript函数重载 function addMethod (object, name, fn) { // 先把原来的object[name] 方法,保存在old中 var old = object[name]; // 重新定义 object[name] 方法 object[name] = function () { // 如果函数需要的参数 和 实际传入的参数 的个数相同,就直接调用fn if (fn.length === arguments.length) { return fn.apply(this, arguments); // 如果不相同,判断old 是不是函数, // 如果是就调用old,也就是刚才保存的 object[name] 方法 } else if (typeof old === "function") { return old.apply(this, arguments); } } } //addMethod function addMethod(object, name, fn) {   var old = object[name];   object[name] = function() {     if(fn.length === arguments.length) {       return fn.apply(this, arguments);     } else if(typeof old === "function") {       return old.apply(this, arguments);     }   } } var people = {   values: ["Dean Edwards", "Alex Russell", "Dean Tom"] }; /* 下面开始通过addMethod来实现对people.find方法的重载 */ // 不传参数时,返回peopld.values里面的所有元素 addMethod(people, "find", function() {   return this.values; }); // 传一个参数时,按first-name的匹配进行返回 addMethod(people, "find", function(firstName) {   var ret = [];   for(var i = 0; i < this.values.length; i++) {     if(this.values[i].indexOf(firstName) === 0) {       ret.push(this.values[i]);     }   }   return ret; }); // 传两个参数时,返回first-name和last-name都匹配的元素 addMethod(people, "find", function(firstName, lastName) {   var ret = [];   for(var i = 0; i < this.values.length; i++) {     if(this.values[i] === (firstName + " " + lastName)) {       ret.push(this.values[i]);     }   }   return ret; }); // 测试: console.log(people.find()); //["Dean Edwards", "Alex Russell", "Dean Tom"] console.log(people.find("Dean")); //["Dean Edwards", "Dean Tom"] console.log(people.find("Dean Edwards")); //["Dean Edwards"] */