很多时候我们在处理对象的时候都在做一件同样的事情----将某一个源对象的所有属性拷贝到一个目标对象上。
先看看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; }