第188天:extend拷贝创建对象的原理-阿里云开发者社区

开发者社区> 云计算> 正文

第188天:extend拷贝创建对象的原理

简介: 一、拷贝创建对象的原理 1 //拷贝创建对象核心代码 2 function extend(target,source) { 3 //遍历对象 4 for(var i in source){ 5 target[i] = so...

一、拷贝创建对象的原理

 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>

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章