一个简单的javascript深拷贝

var extendDeep = function(parent,child){

	var i,
		toStr = Object.prototype.toString,
		astr  = ‘[object Array]‘;
	child = child || {};

	for( i in parent){
		if(parent.hasOwnProperty(i)){
			if(typeof parent[i] === ‘object‘){
				child[i] = toStr.call(parent[i])=== astr ? [] : {};
				extendDeep(parent[i],child[i]);
			}else{
				child[i] = parent[i];
			}

		}
	}

	return child;
};
//测试代码:
var obj1 = {
	a : 1,
	b : {
		c : {
			d : 1
		}
	}
};
var obj2 = extendDeep(obj1);
console.log(obj2);

一个简单的javascript深拷贝

时间: 2024-10-04 00:09:50

一个简单的javascript深拷贝的相关文章

一个简单的Javascript闭包示例

//=====用闭包实现函数的Curry化===== //数字求和函数的函数生成器 function addGenerator( num ){ //返回一个简单的匿名函数,求两个数的和,其中第一个数字来自于函数生成器 return function( toAdd ){ return num + toAdd; } } //addFive是一个求5加上一个参数的和的函数 var addFive = addGenerator( 5 ); alert(addFive( 5 ) == 10);//true

一个简单的 JavaScript 的模板引擎

比较简单,直接贴代码吧: (function (global) { var _version = '1.0.0', _setting = { openTag: '<#', /*逻辑代码的开始标签*/ closeTag: '#>', /*逻辑代码的结束标签*/ maskOpenTag: '<!-', /*注释的开始标签*/ maskCloseTag: '-!>' /*注释的结束标签*/ }, _templateCache = {}, _escapeHTML = function (s

一个简单的JavaScript实例

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>第一个JavaScript程序</title> 6 <script> 7 //页面加载时执行的函数 8 function showEnter() 9 { 10 alert("尊敬的客户,欢迎光临本网站");

一个简单的javascript获取URL参数的代码

1 function request(paras){ 2 var url = location.href; 3 var paraString = url.substring(url.indexOf("?")+1,url.length).split("&"); 4 var paraObj = {} 5 for (i=0; j=paraString[i]; i++){ 6 paraObj[j.substring(0,j.indexOf("="

使用javascript完成一个简单工厂设计模式。

在JS中创建对象会习惯的使用new关键字和类构造函数(也是可以用对象字面量). 工厂模式就是一种有助于消除两个类依赖性的模式. 工厂模式分为简单工厂模式和复杂工厂模式,这篇主要讲简单工厂模式. 简单工厂模式:使用一个类来生成实例. 复杂工厂模式:使用子类来决定一个成员变量应该是哪个具体的类的实例. 简单工厂模式: 常用对象方法创建和调用 var BallShop = function(){}; BallShop.prototype = { sellBall : function(model){

javascript源码之js实现的一个简单的网页拾色器

今天学习了window对象,跟着学习了一个简单的网页拾色器的demo,拿出来和大家分享. 主页面代码: <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>拾色器</title></head><body><h1>网页拾色器</h1>    <scr

JavaScript之实现一个简单的Vue

vue的使用相信大家都很熟练了,使用起来简单.但是大部分人不知道其内部的原理是怎么样的,今天我们就来一起实现一个简单的vue. Object.defineProperty() 实现之前我们得先看一下Object.defineProperty的实现,因为vue主要是通过数据劫持来实现的,通过get.set来完成数据的读取和更新. var obj = {name:'wclimb'}var age = 24Object.defineProperty(obj,'age',{enumerable: tru

编译原理实战入门:用 JavaScript 写一个简单的四则运算编译器(四)结语

四则运算编译器,虽然说功能很简单,只能编译四则运算表达式.但是编译原理前端部分几乎都有涉及,词法分析,语法分析,还有代码生成. 再复杂的编译器.再简单的编译器,功能上是差不多的,只是复杂的编译器实现上会更困难. 这个系列的文章是为了帮助你入门,在这个基础上再去看编译原理相关书籍,不至于打瞌睡. 如果你对编译原理很有兴趣,并且想更深一步的学习,在这里强烈推荐你看一本书--我心目中的神书--<计算机系统要素-从零开始构建现代计算机>. 这本书神在哪? 神在它通俗易懂,对小白足够友好,但又不过分肤浅

一个简单的、面向对象的javascript基础框架

如果以后公司再能让我独立做一套新的完整系统,那么我肯定会为这个系统再写一个前端框架,那么我到底该如何写这个框架呢? 在我以前的博客里我给大家展示了一个我自己写的框架,由于当时时间很紧张,做之前几乎没有完整的思考过我到底该如何去写这个框架,所以事后对于这个框架我有很多遗憾之处,当我重构过一次代码后我就没再做过任何重构操作的工作,因为我根本不想再去给它修修补补了,之所以有这个想法,就是我对我写的那个框架的基础架构不满意. 为什么不满意这个基础架构了?我们先来看看我当时封装框架的方式: (functi