一、拷贝创建对象的原理

 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>

转载于:https://www.cnblogs.com/le220/p/8511815.html

第188天:extend拷贝创建对象的原理相关推荐

  1. 【转】零拷贝的实现原理

    原文:蚂蚁二面,面试官问我零拷贝的实现原理,当场懵了- 架构师社区 以下文章来源于占小狼的博客 ,作者占小狼 链接:https://mp.weixin.qq.com/s/xA5irZwZL-ryw0q ...

  2. 蚂蚁金服二面:面试官问我零拷贝的实现原理,当场跪。。。

    本文来源:占小狼的博客 "狼哥,面试又跪了,碰到了知识盲区" "哪个?" "一面还可以,二面面试官问我零拷贝的原理,懵逼了...这块内容没去研究过&q ...

  3. golang切片slice详解:介绍、内存分析、定义、遍历、切片可以继续切片、切片可以动态增长、切片的拷贝及底层原理

    切片的引入 [1]切片(slice)是golang中一种特有的数据类型 [2]数组有特定的用处,但是却有一些呆板(数组长度固定不可变),所以在 Go 语言的代码里并不是特别常见.相对的切片却是随处可见 ...

  4. 深入浅出解释深拷贝、浅拷贝、对象拷贝、引用拷贝原理和应用

    拷贝总体上分为引用拷贝和对象拷贝. 1. 引用拷贝 创建一个指向对象的引用变量的拷贝. public class QuoteCopy {public static void main(String[] ...

  5. Linux I/O原理和零拷贝Zero-copy技术全面揭秘

    目录 导言 计算机存储器 物理内存 虚拟内存 静态重定位 存储器抽象 交换(swapping)技术 虚拟内存技术 用户态和内核态 Linux I/O I/O 缓冲区 I/O 模式 程序控制 I/O 中 ...

  6. 再谈js对象数据结构底层实现原理-object array map set

    2019独角兽企业重金招聘Python工程师标准>>> 如果有java基础的同学,可以回顾下<再谈Java数据结构-分析底层实现与应用注意事项>:java把内存分两种:一 ...

  7. JVM 调优 2:GC 如何判断对象是否为垃圾,三色标记算法应用原理及存在的问题?

    文章目录 前言 一.如何判断一个对象是否为垃圾? 1.1.reference count(引用计数) 1.2.reference count(引用计数)存在的问题 二.Root Searching(根 ...

  8. Java-深拷贝与浅拷贝

    https://blog.csdn.net/riemann_/article/details/87217229 一.拷贝的引入 (1).引用拷贝 创建一个指向对象的引用变量的拷贝. Teacher t ...

  9. Linux Zero-copy零拷贝技术:源码示例

    <Linux Zero-copy零拷贝技术:源码示例> <Linux Zero-copy零拷贝技术全面揭秘> <什么是mmap?零拷贝?DMA?> <Linu ...

最新文章

  1. 5.html基础标签:块级+行级元素+特殊字符+嵌套规则
  2. python event多线程回调
  3. Python 性能剖分工具
  4. linux 进程综合指令
  5. 微软中国职位[北京工作]
  6. java baas_调试后台Baas(Java):调试用户自己的java代码
  7. Java零基础系列001——第一个程序
  8. 百度小程序html解析图片过大_如何快速高效爬取谷歌百度必应的图片
  9. mysql cursor 字符集_两个MySQL存储过程中文问题的解决方案
  10. Python_遍历时删除的处理说明
  11. cad立体图怎么旋转看图_CAD趣事之对CAD图纸进行旋转,360°无死角查看的方法-dwg文件查看器...
  12. 关于海康相机ip地址无法更改问题
  13. Android:LayoutInflater(布局服务)的 简单介绍 使用方法解析
  14. 02、PMI点互信息 PPMI(Positive PMI)
  15. c语言3f,C语言%.4f与%3f代表是什么意思?
  16. 计算机表格如何求和,excel表格怎么求和? excel自动求和的三种方法
  17. ROS:*.bag.active恢复
  18. @Value读取配置文件报Could not resolve placeholder 'rabbitmq.host' in value'${rabbitmq.host}'或null的问题
  19. Ruby on Rails 之旅(七)—— Ruby on Rails 入门(5)
  20. mybatis尚硅谷跟学笔记

热门文章

  1. fixture ‘xxx‘ not found
  2. Apollo MPC OSQP Solver
  3. odoo12企业版修改邮箱配置
  4. Latex 去掉行号
  5. 目标检测 | RCNN算法系列汇总+详解(包括Fast, Faster)
  6. c# 将EF查询出的日期格式化
  7. Unity打包基于Android的apk环境搭建总结
  8. Qt开发北斗定位系统融合百度地图API及Qt程序打包发布
  9. java 虚拟机 Java内存结构 JVM垃圾回收机制算法
  10. [AI]深度优先、广度优先、迭代加深搜索练习题