原生js实现复制对象、扩展对象 类似jquery中的extend()方法


Posted in Javascript onAugust 30, 2014

jq的extend()方法能很方便的实现扩展对象方法,语法如下:$.extend(obj1,boj2,obj3);

现在要实现的是:原生js实现复制对象,扩展对象,类似jq中的extend()方法,具体实例如下:
现有3个对象字面量:

var o1={hello:1,old:555},
o2 = {
abc: 55555555,
hello: 2,
fun: function() {
alert(111);
}
},
o3={third:9999};

实现目标:

复制o1对象,把 o2,o3的对象属性和方法都扩展进前面复制得到的对象中并输出。

<script>
var o1={hello:1,old:555},
o2 = {
abc: 55555555,
hello: 2,
fun: function() {
alert(111);
}
},
o3={third:9999};
function cloneObj(oldObj) { //复制对象方法
if (typeof(oldObj) != 'object') return oldObj;
if (oldObj == null) return oldObj;
var newObj = new Object();
for (var i in oldObj)
newObj[i] = cloneObj(oldObj[i]);
return newObj;
};
function extendObj() { //扩展对象
var args = arguments;
if (args.length < 2) return;
var temp = cloneObj(args[0]); //调用复制对象方法
for (var n = 1; n < args.length; n++) {
for (var i in args[n]) {
temp[i] = args[n][i];
}
}
return temp;
}
var t=extendObj(o1,o2,o3);
console.log(t);
console.log(o1);
console.log(o2);
console.log(o3);
</script>
Javascript 相关文章推荐
JavaScript与C# Windows应用程序交互方法
Jun 29 Javascript
javascript之学会吝啬 精简代码
Apr 25 Javascript
获取dom元素那些讨厌的位置封装代码
Jun 23 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
Dec 10 Javascript
详解javascript中的事件处理
Nov 06 Javascript
基于require.js的使用(实例讲解)
Sep 07 Javascript
weebox弹出窗口不居中显示的解决方法
Nov 27 Javascript
vue中input的v-model清空操作
Sep 06 Javascript
React实现评论的添加和删除
Oct 20 Javascript
js数组的基本使用总结
Jan 18 Javascript
一定要知道的 25 个 Vue 技巧
Nov 02 Vue.js
ECharts transform数据转换和dataZoom在项目中使用
Dec 24 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
Aug 30 #Javascript
仿百度联盟对联广告实现代码
Aug 30 #Javascript
jQuery针对各类元素操作基础教程
Aug 29 #Javascript
jQuery事件用法实例汇总
Aug 29 #Javascript
laytpl 精致巧妙的JavaScript模板引擎
Aug 29 #Javascript
jQuery动画特效实例教程
Aug 29 #Javascript
jQuery实用函数用法总结
Aug 29 #Javascript
You might like
介绍几个array库的新函数 php
2006/12/29 PHP
php 调用远程url的六种方法小结
2009/11/02 PHP
PHP daddslashes 使用方法介绍
2012/10/26 PHP
PHP用身份证号获取星座和生肖的方法
2013/11/07 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
php中header设置常见文件类型的content-type
2015/06/23 PHP
thinkPHP中create方法与令牌验证实例浅析
2015/12/08 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
JavaScript prototype属性使用说明
2010/05/13 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
利用npm 安装删除模块的方法
2018/05/15 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
让python在hadoop上跑起来
2016/01/27 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
2020/05/29 Python
党支部书记先进事迹
2014/01/17 职场文书
《鱼游到了纸上》教学反思
2014/02/20 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
大学生自我鉴定书
2014/03/24 职场文书
2014年师德承诺书
2014/05/23 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
python 爬取吉首大学网站成绩单
2021/06/02 Python
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL