很多时候我们在处理对象的时候都在做一件同样的事情----将某一个源对象的所有属性拷贝到一个目标对象上

 

先看看prototype的做法

 

 

Object.extend = function(destination,source){
     for(var pro in source){
          destination[pro] = source[pro];
     }
     return destination;
}

 

 

 

下面我们参照tangram的方式:

 

  • 拷贝的是源对象自己的属性,不拷贝prototype的成员
  • 在拷贝过程中,目标对象上与源对象上key相同的对应值会被覆盖

/*
@function
@param target  -----目标对象
@param source -----源对象
*/
ZYC.object.extend = function(target,source){
   for(var p in source){
      if(source.hasOwnProperty(p)){
          //拷贝自身属性
          target[p] = source[p];
      }
   }
   return target;
}