一、拷贝创建对象的原理

  //拷贝创建对象核心代码
function extend(target,source) {
//遍历对象
for(var i in source){
target[i] = source[i];
}
return target;
} //游戏随机生成名字
var boy = {
name:'无忌'
,image:'男性头像'
,age:20
,sex:'男'
}; var gril = {
name:'风晴雪'
,age:18
,image:'女性头像'
,sex:'女'
}; var zuixiake = extend({}, boy);
zuixiake.name='醉侠客';
console.log(zuixiake.name);//醉侠客
console.log(zuixiake.sex);//男

二、拷贝进阶用法

 <script>

     //extend2实现的功能:extend(target,obj1,obj2,obj3)

    function extend () {
var key,i = 0,len = arguments.length,target = null,copy;
if(len === 0){
return;
}else if(len === 1){
target = this;
}else{
i++;
target = arguments[0];
}
for(; i < len; i++){
for(key in arguments[i]){
copy = arguments[i][key];
target[key] = copy;
}
}
return target;
} function extend2(){
for (var p in source) {
if (source.hasOwnProperty(p)) {
target[p] = source[p];
}
} return target;
} //游戏随机生成名字
var boy = {
name:'无忌'
,image:'男性头像'
,age:20
,sex:'男'
}; //技能名称,等级,伤害值,需要的魔法
var technology = {tname:'亡灵复活',tlevel:10,tstrength:3000,tmagic:30}; var shenqi = {sname:'霜之哀伤',slevel:30,sstrength:3000};
//当这个人有了穿上盔甲,圣衣,六神合体,戴上魔法戒指之后,自动也拥有一个技能 //第一种用法
var zuixiake = extend({}, technology,shenqi);
zuixiake.name='醉侠客';
console.log(zuixiake.name);//醉侠客
console.log(zuixiake.tname);//亡灵复活
console.log(zuixiake.sname);//霜之哀伤 //第二种用法
extend(boy,technology,shenqi);
console.log(boy.name);//无忌
console.log(boy.tname);//亡灵复活
console.log(boy.sname);//霜之哀伤 </script>

第188天:extend拷贝创建对象的原理的更多相关文章

  1. Vue.mixin Vue.extend(Vue.component)的原理与区别

    1.本文将讲述 方法 Vue.extend Vue.mixin 与 new Vue({mixins:[], extend:{}})的区别与原理 先回顾一下 Vue.mixin 官网如下描述: Vue. ...

  2. javascript拷贝创建对象

    ​ /*拷贝创建对象*/ function hightExtend() { var key = 0, i = 0, len = arguments.length; target = null; if ...

  3. Java Bean拷贝工具Orika原理解析

    最近面试被问及对象拷贝怎样才能高效,实际上问的就是Orika或者BeanCopier的原理.由于网上对Orika原理的解析并不太多-因此本文重点讲解一下Orika的原理.(Orika是基于JavaBe ...

  4. Spring创建对象的原理

    当容器启动时,首先会加载给定的配置文件,将配置文件逐行解析.当解析到bean标签时,根据class属性的值,通过反射调用创建对象. 将创建好的对象存储到Spring自身维护的Map当中.map中的ke ...

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

    如果有java基础的同学,可以回顾下<再谈Java数据结构—分析底层实现与应用注意事项>:java把内存分两种:一种是栈内存,另一种是堆内存.基本类型(即int,short,long,by ...

  6. 夺命雷公狗—angularjs—24—extend继承对象

    我们的angularjs中也是给我们留下了方法来做继承的,那么他就是传授中的extend... 不过要如下所示,第二个参数是继承到第一个对象里面的... <!DOCTYPE html> & ...

  7. Netty基础系列(5) --零拷贝彻底分析

    前言 上一节(堆外内存与零拷贝)当中我们从jvm堆内存的视角解释了一波零拷贝原理,但是仅仅这样还是不够的. 为了彻底搞懂零拷贝,我们趁热打铁,接着上一节来继续讲解零拷贝的底层原理. 感受一下NIO的速 ...

  8. (二十三)原型模式详解(clone方法源码的简单剖析)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 原型模式算是JAVA中最简单 ...

  9. Ajax&jQuery教案总结

    Ajax&jQuery教程总结 目录 第一章 Ajax入门 6 第1讲 传统表单提交存在的问题 6 课程内容 6 1. 问题的引入 6 2. 问题的解决 6 参考进度(0.5课时) 7 第2讲 ...

随机推荐

  1. 20155220java实验二 面向对象程序设计 实验报告

    一.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 (一)单元测试 (1) 三种代码 伪代码 产 ...

  2. 20155232 2016-2017-3 《Java程序设计》第6周学习总结

    20155232 2016-2017-3 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 异常处理 1.从应用程序来看,如果要将数据从源取出,可以使用输入串流. 2.如果要将 ...

  3. Java——RMI

    之前分布式系统调用用的是比较老的EJB,当时还是作为服务调用方,去调用别的系统的服务.最近发现新公司里面,用的是RMI,查了下发现EJB的底层实现就是RMI,也算是熟悉了... 一,使用JDK 中的R ...

  4. KVM克隆CentOS6虚拟机后无法启动

    启动网卡报如下错误: Bringing up interface eth0: Device eth0 does not seem to be present,delaying initializati ...

  5. Swing 解决 idea 找不到创建gui form的问题

    果然,寄希望于百度google不如自己动手,还是得吃透文档, 然后就是对于别人的博客要严格对照步骤来,否则都容易达不到效果 这边gui form在idea下找不到创建,百度google一个说的也没有, ...

  6. 第六篇 native 版本的Postman如何通过代理服务器录制Web及手机APP请求

    第四篇主要介绍了chrome app版本的postman如何安装及如何录制Web脚本,比较简单. 但是chrome app 版本和native 版本相比,对应chrome app 版本官方已经放弃支持 ...

  7. JavaScript学习笔记(二)——函数和数组

    第二章 函数简介 1 第一个函数示例 <script language="JavaScript" type="text/JavaScript"> f ...

  8. JAVA学习笔记--数组初始化

    JAVA中,数组只是相同类型的.用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.数组通过方括号下标操作符[]来定义和使用,要定义一个数组只需在类型名后面加上一个方括号即可,如: int[] ...

  9. 从零开始的Python学习Episode 8——深浅拷贝

    深浅拷贝 一.浅拷贝 列表中存储的是数据的内存地址,当我们要查询或修改列表中的数据时,我们是通过列表中的地址找到要访问的内存.当我们修改列表中的数据时,如果修改的是一个不可变类型(整型,长整型,浮点数 ...

  10. 音频分析框架pyAudioAnalysis文档

    “ pyAudioAnalysis是一个非常好用且强大的音频分析开源工具,能实现音频的特征提取.分类和回归模型的训练和执行,以及其他一些实用的功能.此外,本文档并非直译,也有部分比较简略,可以结合源码 ...