原生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 获取select下拉列表值的代码
Sep 07 Javascript
用js实现输入提示(自动完成)的实例代码
Jun 14 Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
Jun 24 Javascript
Javascript模拟加速运动与减速运动代码分享
Dec 11 Javascript
JS公共小方法之判断对象是否为domElement的实例
Nov 25 Javascript
原生javascript实现读写CSS样式的方法详解
Feb 20 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
Apr 10 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
Apr 25 Javascript
vue中npm包全局安装和局部安装过程
Sep 03 Javascript
微信小程序如何实现在线客服功能
Oct 16 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
Mar 04 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
Aug 05 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
整合了前面的PHP数据库连接类~~做成一个分页类!
2006/11/25 PHP
3款值得推荐的微信开发开源框架
2014/10/28 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
初识laravel5
2015/03/02 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
关于Curl在Swoole协程中的解决方案详析
2019/09/12 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
详解搭建es6+devServer简单开发环境
2018/09/25 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Python使用configparser读取ini配置文件
2020/05/25 Python
Python 实现简单的客户端认证
2020/07/29 Python
女大学生毕业找工作的自我评价
2013/10/03 职场文书
工程专业毕业生自荐信范文
2013/12/25 职场文书
职业生涯规划设计步骤
2014/01/12 职场文书
小组名称和口号
2014/06/09 职场文书
学校党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
Java数组详细介绍及相关工具类
2022/04/14 Java/Android