当前位置: 首页 > 编程笔记 >

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

姜阳
2023-03-14
本文向大家介绍原生js实现复制对象、扩展对象 类似jquery中的extend()方法,包括了原生js实现复制对象、扩展对象 类似jquery中的extend()方法的使用技巧和注意事项,需要的朋友参考一下

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>
 类似资料:
  • 本文向大家介绍浅谈jQuery中的$.extend方法来扩展JSON对象,包括了浅谈jQuery中的$.extend方法来扩展JSON对象的使用技巧和注意事项,需要的朋友参考一下 $.extend方法可以扩展JSON对象,用一个或多个其他对象来扩展一个对象,返回被扩展的对象。 例一 合并 settings 和 options,修改并返回 settings 结果 settings == { vali

  • 本文向大家介绍详解JS中Array对象扩展与String对象扩展,包括了详解JS中Array对象扩展与String对象扩展的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接给大家上array对象扩展代码了,具体代码如下所示: 下面是string对象扩展代码如下所示:

  • 属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 var foo = 'bar'; var baz = {foo}; baz // {foo: "bar"} // 等同于 var baz = {foo: foo}; 上面代码表明,ES6允许在对象之中,只写属性名,不写属性值。这时,属性值等于属性名所代表的变量。下面是另一个例子。 function f(

  • 本文向大家介绍js对象的复制继承实例,包括了js对象的复制继承实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js对象的复制继承。分享给大家供大家参考。具体如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 本文向大家介绍原生js实现对Ajax的封装(仿jquery),包括了原生js实现对Ajax的封装(仿jquery)的使用技巧和注意事项,需要的朋友参考一下 前言 众所周知,jquery在我们日常开发中的使用频率非常高,与js相比,我们省去了冗长的获取元素的代码,不用考虑一些麻烦的兼容问题,更加方便的动画实现,以及更加方便的方法调用让我们觉得jquery真是越用越舒服。但是jquery说到底还是对j

  • 问题 你想要扩展一个类来增加新的函数或者替换旧的。 解决方案 使用 :: 把你的新函数分配到对象或者类的原型中。 String::capitalize = () -> (this.split(/\s+/).map (word) -> word[0].toUpperCase() + word[1..-1].toLowerCase()).join ' ' "foo bar baz".ca