js实现复制对象、扩展对象 方法
2018-03-04 13:22
871 查看
jquery里有extend方法来扩展对象,但如果我们只用js,怎么来实现扩展对象呢?
不废话直接上代码,看了就懂。
源代码:
注:这里我们写方法的时候,不要用Array.prototype.name 的形式,因为上面cloneObj方法中我们涉及到了for-in遍历,如果用了改写原型的方式写方法,遍历时会把原型的方法也遍历进去,这不是为我们想要的结果。
不废话直接上代码,看了就懂。
源代码:
//******** 深复制对象 ******** function cloneObj(oldObj) { if(typeof(oldObj) != 'object'){return oldObj;} if(oldObj == null){return oldObj;} var newObj = new Object(); for(var key in oldObj){ //若newObj.key = oldObj[key]则不行,因为这里key是变量 newObj[key] = oldObj[key]; } return newObj; }; //******** 扩展对象 ******** function extendObj() { if(arguments.length < 1){return 0;} var tempobj = cloneObj(arguments[0]); //调用复制对象cloneObj方法 for(var n = 1;n < arguments.length;n++){ for(var key in arguments ){ tempobj[key] = arguments [key]; } } return tempobj; }; //******** 测试 扩展对象 ******** //让obj3继承obj1和obj2 var obj1 = {name:"bty",age:12}; var obj2 = {sex:"boy"}; var obj3 = extendObj(obj1,obj2); console.log(obj3.age); //12 //******** 测试 复制对象 ******** var obj2 = cloneObj(obj1);//深复制对象 obj1.name = "ssh";//修改obj1.name值,但下面obj2.name值不变 console.log(obj2.name); //bty
注:这里我们写方法的时候,不要用Array.prototype.name 的形式,因为上面cloneObj方法中我们涉及到了for-in遍历,如果用了改写原型的方式写方法,遍历时会把原型的方法也遍历进去,这不是为我们想要的结果。
相关文章推荐
- 原生js实现复制对象、扩展对象 类似jquery中的extend()方法
- 原生js实现复制对象、扩展对象 类似jquery中的extend()方法
- 原生js实现复制对象、扩展对象 类似jquery中的extend()方法
- 原生js实现复制对象、扩展对象 类似jquery中的extend()方法
- 为JS脚本中String对象扩展一个静态Format()方法
- js 复制或插入Html的实现方法小结
- 扩展js中对象的方法
- 使用MVC中的HtmlHelper对象的ActionLink方法,实现一个Javascript:void(0)效果,去调用一个JS方法
- 改进版通过Json对象实现深复制的方法
- 通过js脚本复制网页上的一个表格的不错实现方法
- android 上 webkit js 本地扩展之全局本地对象实现步骤
- 编写js扩展方法实现判断一个数组中是否包含某个元素
- js实现运动logo图片效果及运动元素对象sportBox使用方法
- 改进版通过Json对象实现深复制的方法
- JS 实现 创建类、继承、方法添加、对象克隆、数组封装操作
- 扩展IList对象,实现深拷贝扩展方法
- 有关序列化实现引用对象深度复制的几种方法 !
- JS 实现对象属性的get 和set方法
- Zero Clipboard js+swf实现的复制功能使用方法