第188天:extend拷貝創建對象的原理
阿新 • • 發佈:2018-03-10
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{ 12i++; 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拷貝創建對象的原理