第188天:extend拷贝创建对象的原理
一、拷贝创建对象的原理
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拷贝创建对象的原理相关推荐
- 【转】零拷贝的实现原理
原文:蚂蚁二面,面试官问我零拷贝的实现原理,当场懵了- 架构师社区 以下文章来源于占小狼的博客 ,作者占小狼 链接:https://mp.weixin.qq.com/s/xA5irZwZL-ryw0q ...
- 蚂蚁金服二面:面试官问我零拷贝的实现原理,当场跪。。。
本文来源:占小狼的博客 "狼哥,面试又跪了,碰到了知识盲区" "哪个?" "一面还可以,二面面试官问我零拷贝的原理,懵逼了...这块内容没去研究过&q ...
- golang切片slice详解:介绍、内存分析、定义、遍历、切片可以继续切片、切片可以动态增长、切片的拷贝及底层原理
切片的引入 [1]切片(slice)是golang中一种特有的数据类型 [2]数组有特定的用处,但是却有一些呆板(数组长度固定不可变),所以在 Go 语言的代码里并不是特别常见.相对的切片却是随处可见 ...
- 深入浅出解释深拷贝、浅拷贝、对象拷贝、引用拷贝原理和应用
拷贝总体上分为引用拷贝和对象拷贝. 1. 引用拷贝 创建一个指向对象的引用变量的拷贝. public class QuoteCopy {public static void main(String[] ...
- Linux I/O原理和零拷贝Zero-copy技术全面揭秘
目录 导言 计算机存储器 物理内存 虚拟内存 静态重定位 存储器抽象 交换(swapping)技术 虚拟内存技术 用户态和内核态 Linux I/O I/O 缓冲区 I/O 模式 程序控制 I/O 中 ...
- 再谈js对象数据结构底层实现原理-object array map set
2019独角兽企业重金招聘Python工程师标准>>> 如果有java基础的同学,可以回顾下<再谈Java数据结构-分析底层实现与应用注意事项>:java把内存分两种:一 ...
- JVM 调优 2:GC 如何判断对象是否为垃圾,三色标记算法应用原理及存在的问题?
文章目录 前言 一.如何判断一个对象是否为垃圾? 1.1.reference count(引用计数) 1.2.reference count(引用计数)存在的问题 二.Root Searching(根 ...
- Java-深拷贝与浅拷贝
https://blog.csdn.net/riemann_/article/details/87217229 一.拷贝的引入 (1).引用拷贝 创建一个指向对象的引用变量的拷贝. Teacher t ...
- Linux Zero-copy零拷贝技术:源码示例
<Linux Zero-copy零拷贝技术:源码示例> <Linux Zero-copy零拷贝技术全面揭秘> <什么是mmap?零拷贝?DMA?> <Linu ...
最新文章
- 5.html基础标签:块级+行级元素+特殊字符+嵌套规则
- python event多线程回调
- Python 性能剖分工具
- linux 进程综合指令
- 微软中国职位[北京工作]
- java baas_调试后台Baas(Java):调试用户自己的java代码
- Java零基础系列001——第一个程序
- 百度小程序html解析图片过大_如何快速高效爬取谷歌百度必应的图片
- mysql cursor 字符集_两个MySQL存储过程中文问题的解决方案
- Python_遍历时删除的处理说明
- cad立体图怎么旋转看图_CAD趣事之对CAD图纸进行旋转,360°无死角查看的方法-dwg文件查看器...
- 关于海康相机ip地址无法更改问题
- Android:LayoutInflater(布局服务)的 简单介绍 使用方法解析
- 02、PMI点互信息 PPMI(Positive PMI)
- c语言3f,C语言%.4f与%3f代表是什么意思?
- 计算机表格如何求和,excel表格怎么求和? excel自动求和的三种方法
- ROS:*.bag.active恢复
- @Value读取配置文件报Could not resolve placeholder 'rabbitmq.host' in value'${rabbitmq.host}'或null的问题
- Ruby on Rails 之旅(七)—— Ruby on Rails 入门(5)
- mybatis尚硅谷跟学笔记
热门文章
- fixture ‘xxx‘ not found
- Apollo MPC OSQP Solver
- odoo12企业版修改邮箱配置
- Latex 去掉行号
- 目标检测 | RCNN算法系列汇总+详解(包括Fast, Faster)
- c# 将EF查询出的日期格式化
- Unity打包基于Android的apk环境搭建总结
- Qt开发北斗定位系统融合百度地图API及Qt程序打包发布
- java 虚拟机 Java内存结构 JVM垃圾回收机制算法
- [AI]深度优先、广度优先、迭代加深搜索练习题