1. 程式人生 > >第188天:extend拷貝創建對象的原理

第188天:extend拷貝創建對象的原理

strength 遍歷 evel 自動 body targe 用法 scrip key

一、拷貝創建對象的原理

 1  //拷貝創建對象核心代碼
 2     function extend(target,source) {
 3         //遍歷對象
 4         for(var i in source){
 5             target[i] = source[i];
 6         }
 7         return target;
 8     }
 9 
10     //遊戲隨機生成名字
11        var boy = {
12         name:‘無忌‘
13         ,image:‘男性頭像‘
14         ,age:20
15
,sex:‘男‘ 16 }; 17 18 var gril = { 19 name:‘風晴雪‘ 20 ,age:18 21 ,image:‘女性頭像‘ 22 ,sex:‘女‘ 23 }; 24 25 26 var zuixiake = extend({}, boy); 27 zuixiake.name=‘醉俠客‘; 28 console.log(zuixiake.name);//醉俠客 29 console.log(zuixiake.sex);//

二、拷貝進階用法

 1 <script>
 2 
 3     //extend2實現的功能:extend(target,obj1,obj2,obj3)
 4 
 5    function extend () {
 6         var key,i = 0,len = arguments.length,target = null,copy;
 7         if(len === 0){
 8             return;
 9         }else if(len === 1){
10             target = this;
11         }else{
12
i++; 13 target = arguments[0]; 14 } 15 for(; i < len; i++){ 16 for(key in arguments[i]){ 17 copy = arguments[i][key]; 18 target[key] = copy; 19 } 20 } 21 return target; 22 } 23 24 function extend2(){ 25 for (var p in source) { 26 if (source.hasOwnProperty(p)) { 27 target[p] = source[p]; 28 } 29 } 30 31 return target; 32 } 33 34 //遊戲隨機生成名字 35 var boy = { 36 name:‘無忌‘ 37 ,image:‘男性頭像‘ 38 ,age:20 39 ,sex:‘男‘ 40 }; 41 42 //技能名稱,等級,傷害值,需要的魔法 43 var technology = {tname:‘亡靈復活‘,tlevel:10,tstrength:3000,tmagic:30}; 44 45 var shenqi = {sname:‘霜之哀傷‘,slevel:30,sstrength:3000}; 46 //當這個人有了穿上盔甲,聖衣,六神合體,戴上魔法戒指之後,自動也擁有一個技能 47 48 //第一種用法 49 var zuixiake = extend({}, technology,shenqi); 50 zuixiake.name=‘醉俠客‘; 51 console.log(zuixiake.name);//醉俠客 52 console.log(zuixiake.tname);//亡靈復活 53 console.log(zuixiake.sname);//霜之哀傷 54 55 56 //第二種用法 57 extend(boy,technology,shenqi); 58 console.log(boy.name);//無忌 59 console.log(boy.tname);//亡靈復活 60 console.log(boy.sname);//霜之哀傷 61 62 </script>

第188天:extend拷貝創建對象的原理