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>
新聞熱點
疑難解答