$(function () { var object1 = { apple: 0, banana: {weight: 52, price: 100}, cherry: 97 }; var object2 = { banana: {price: 200}, durian: 100 }; /* object2 合并到 object1 中 */ $.extend(object1, object2); /*判断是否存在对象如果有则直接调用该对象将普通对象转换成json数据 否则创建一个函数用于讲普通对象转换成普通数组数据 返回时经过拆分重组成json数据*/ var printObj = typeof JSON != "undefined" ? JSON.stringify : function(obj) { var arr = []; $.each(obj, function(key, val) { var next = key + ": "; /*isPlainObject判断是否为对象 否则回调本函数*/ next += $.isPlainObject(val) ? printObj(val) : val; arr.push( next ); });
/*
join将数组用‘,’分隔开
*/ return "{ " + arr.join(", ") + " }"; }; $("#log").append( printObj(object1) ); })
$.isPlainObject(val))
jQuery.isPlainObject()函数的返回值为Boolean类型,如果指定的参数是纯粹的对象,则返回true,否则返回false
JSON对象的stringify方法将对象转换成json
console.log(JSON.stringify({ apple: 0, banana: {weight: 52, price: 100}, cherry: 97 }));
extend
2. 如果多个对象具有相同的属性,则后者会覆盖前者的属性值。
$.extend( target [, object1 ] [, objectN ] )
指示是否深度合并 $.extend( [deep ], target, object1 [, objectN ] )//deep 可选。 Boolean类型 指示是否深度合并对象,默认为false。如果该值为true,且多个对象的某个同名属性也都是对象,则该"属性对象"的属性也将进行合并。