第188天:extend拷贝创建对象的原理
一、拷贝创建对象的原理
//拷贝创建对象核心代码
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拷贝创建对象的原理的更多相关文章
- Vue.mixin Vue.extend(Vue.component)的原理与区别
1.本文将讲述 方法 Vue.extend Vue.mixin 与 new Vue({mixins:[], extend:{}})的区别与原理 先回顾一下 Vue.mixin 官网如下描述: Vue. ...
- javascript拷贝创建对象
/*拷贝创建对象*/ function hightExtend() { var key = 0, i = 0, len = arguments.length; target = null; if ...
- Java Bean拷贝工具Orika原理解析
最近面试被问及对象拷贝怎样才能高效,实际上问的就是Orika或者BeanCopier的原理.由于网上对Orika原理的解析并不太多-因此本文重点讲解一下Orika的原理.(Orika是基于JavaBe ...
- Spring创建对象的原理
当容器启动时,首先会加载给定的配置文件,将配置文件逐行解析.当解析到bean标签时,根据class属性的值,通过反射调用创建对象. 将创建好的对象存储到Spring自身维护的Map当中.map中的ke ...
- 再谈js对象数据结构底层实现原理-object array map set
如果有java基础的同学,可以回顾下<再谈Java数据结构—分析底层实现与应用注意事项>:java把内存分两种:一种是栈内存,另一种是堆内存.基本类型(即int,short,long,by ...
- 夺命雷公狗—angularjs—24—extend继承对象
我们的angularjs中也是给我们留下了方法来做继承的,那么他就是传授中的extend... 不过要如下所示,第二个参数是继承到第一个对象里面的... <!DOCTYPE html> & ...
- Netty基础系列(5) --零拷贝彻底分析
前言 上一节(堆外内存与零拷贝)当中我们从jvm堆内存的视角解释了一波零拷贝原理,但是仅仅这样还是不够的. 为了彻底搞懂零拷贝,我们趁热打铁,接着上一节来继续讲解零拷贝的底层原理. 感受一下NIO的速 ...
- (二十三)原型模式详解(clone方法源码的简单剖析)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 原型模式算是JAVA中最简单 ...
- Ajax&jQuery教案总结
Ajax&jQuery教程总结 目录 第一章 Ajax入门 6 第1讲 传统表单提交存在的问题 6 课程内容 6 1. 问题的引入 6 2. 问题的解决 6 参考进度(0.5课时) 7 第2讲 ...
随机推荐
- 20155230 实验二《Java面向对象程序设计》实验报告
20155230 实验二<Java面向对象程序设计>实验报告 一.单元测试 三种代码 知道了伪代码.产品代码.测试代码的关系和用途,并根据老师的例子,按测试代码调试了产品代码. 值得注意的 ...
- 20155320 2016-2017-2 《Java程序设计》第二周学习总结
20155320 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 本周主要学习了java语言的基础语法,我发现与以前学过的c语言有许多共同点,无论是从一些基本 ...
- 《图说VR入门》——googleVR 他山之玉
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/53125482 作者:car ...
- Connect C# to MySQL
Connect C# to MySQL using MySQL Connector/Net, Insert, Update, Select, Delete example, Backup and re ...
- 初始CSS模板
/*开始 初始CSS模板 开始*/ body, div, address, blockquote, iframe, ul, ol, dl, dt, dd, li, dl, h1, h2, h3, h4 ...
- ABP 框架集成EF批量增加、删除、修改只针对使用mmsql的
AppService 层使用nuget 添加 EFCore.BulkExtensions 引用 using Abp.Application.Services.Dto; using Abp.Domain ...
- VBA_常用VBA代码
'批量替换字符 Sub Test() Dim i As Integer ).Value = "已激活" Then Cells(i, ).Value = "Active&q ...
- JavaScript 中函数的定义和调用
3种函数定义方式: 1.使用关键字 function 来声明并定义函数 function myFunction(a, b) { return a * b; } 调用函数: var x = myFunc ...
- Javascript深入__proto__和prototype的区别和联系
有一个一个装逼的同事,写了一段代码 function a(){} a.__proto__.__proto__.__proto__ 然后问我,下面这个玩意a.__proto__.__proto__.__ ...
- 从零开始的Python学习Episode 10——函数
函数 一.函数的创建 简单格式 def function_name(参数表): 函数体 return 如果没有写return,函数会默认返回一个none 二.函数的参数 必需参数: 调用函数时必需参数 ...