JS中对象的扩展
一个对JS及前端非常感兴趣的人,希望在这里记录自己的成长!
对象扩展函数:
1 //方法一: 2 function extend(target,source) { 3 4 var key; 5 6 for(key in source) { 7 target[key] = source[key]; 8 9 } 10 11 return target; 12 }
1 //方法二: 深度扩展 2 3 function mix(target,source) { //如果最后参数为布尔型,判定是否覆写同名属性 4 var args = [].slice.call(arguments), i = 1, key, 5 ride = typeof args[args.length - 1] == "boolean" ? args.pop() : true; 6 if(args.length === 1) { //如果参数只有一个,则创建一个新的对象 7 target = !this.window ? this : {}; 8 i = 0; 9 } 10 11 while((source = args[i++])) { //多个对象一起合成 12 for(key in source) { //允许对象糅杂,用户保证都是对象 13 if(ride || !(key in target)) { 14 target[key] = source[key]; 15 } 16 } 17 } 18 19 return target; 20 } 21 22 //测试 23 //如果设置为true的话,则如果当前对象存在的属性值,后来的对象拥有同对象的属性值,会覆盖当前的属性,为false,则不覆盖; 24 var obj1 = { 25 name: 'janglu', 26 age: 25 27 }, 28 obj2 = { 29 job: 'Front-Engineer', 30 salry: 4000 31 }, 32 obj3 = {}; 33 mix(obj3,obj1,obj2,true); 34 console.log(obj3);
结果是:
成长就是不断否定自己