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);

结果是:

posted @ 2014-12-27 15:25  路杰2015  阅读(465)  评论(0编辑  收藏  举报