方法一
function clone(obj){
var o;
switch(typeof obj){
case 'undefined': break;
case 'string' : o = obj + '';break;
case 'number' : o = obj - 0;break;
case 'boolean' : o = obj;break;
case 'object' :
if(obj === null){
o = null;
}else{
if(obj instanceof Array){
o = [];
for(var i = 0, len = obj.length; i < len; i++){
o.push(clone(obj[i]));
}
}else{
o = {};
for(var k in obj){
o[k] = clone(obj[k]);
}
}
}
break;
default:
o = obj;break;
}
return o;
}
方法二
function clone2(obj){
var o, obj;
if (obj.constructor == Object){
o = new obj.constructor();
}else{
o = new obj.constructor(obj.valueOf());
}
for(var key in obj){
if ( o[key] != obj[key] ){
if ( typeof(obj[key]) == 'object' ){
o[key] = clone2(obj[key]);
}else{
o[key] = obj[key];
}
}
}
o.toString = obj.toString;
o.valueOf = obj.valueOf;
return o;
}
方法三
function clone3(obj){
function Clone(){}
Clone.prototype = obj;
var o = new Clone();
for(var a in o){
if(typeof o[a] == "object") {
o[a] = clone3(o[a]);
}
}
return o;
}
分享到:
相关推荐
在JavaScript中,可以使用`Object.create()`或`Object.assign()`来实现原型继承和浅复制,而深复制通常需要借助第三方库如lodash的`_.cloneDeep()`方法。 总的来说,原型模式是一种实用的设计模式,通过复制已有...
2. **初始化插件**:在JavaScript中,通过调用`class2context.init()`方法初始化插件,并传入配置对象。 ```javascript var options = { contextClass: 'contextmenu', // 指定触发菜单的类名 menuItems: [ // ...
总的来说,Instagram克隆项目是一个全面的实践机会,涵盖了JavaScript及其生态系统中的许多核心概念和技术。通过这个项目,开发者不仅可以提高编程技能,还能了解社交应用背后的架构和工作原理。无论是对于初学者...
### JavaScript 开发过程中的实用技巧与经验分享 #### 一、`createElement(element)` `createElement(element)` 是一个非常基础但重要的方法,它用于创建一个新的 HTML 元素节点。该方法接收一个参数,即想要创建...
jQuery 提供了 `wrap()`、`wrapAll()` 和 `wrapInner()` 三个方法来包裹节点。 * `wrap()` 方法将指定节点用其他标记包裹起来,该方法对于需要在文档中插入额外的结构化标记非常有用。 * `wrapAll()` 方法将所有...
2. **对象操作**:对于JavaScript对象,Underscore.js同样提供了丰富的操作手段,如`keys`(获取对象的所有键)、`values`(获取对象的所有值)、`pairs`(将对象转化为键值对数组)等。 3. **函数工具**:...
廖老师的教程通过整合Git、JavaScript和Python三个领域的知识点,让编程新手能够迅速从零基础到独立开发,无论是在前端还是后端,都能具备一定的项目开发能力。同时,教程深入浅出,注重实战,结合真实应用场景,让...
- **结构/表现/行为**:将网页分为三个层次——结构(HTML)、表现(CSS)和行为(JavaScript),这种划分有助于实现网页的模块化开发。 - **DOM/BOM**:文档对象模型(DOM)和浏览器对象模型(BOM)为JavaScript...
总结,Protoblast作为一款前端开源库,通过增强JavaScript对象的功能、提供事件系统、类系统以及丰富的实用工具,极大地提升了前端开发的效率和代码的可维护性。无论是小型项目还是大型应用,都可以考虑将其纳入开发...
22.8 拖拽任意对象 22.9 避免打开无效页面 22.10 用JavaScript调用Google AdSense 22.11 Ajax效果:可拖拽的表格 22.12 JavaScript调用Web Service 22.13 用JavaScript实现编码解码 22.14 创建带属性...
标题中的“git http js”揭示了我们关注的三个主要知识点:Git、HTTP协议以及JavaScript编程语言。接下来,我将详细地介绍这三个领域的核心概念、重要性以及它们在实际开发中的应用。 **Git** 是一个分布式版本控制...
`scrollup`函数接收三个参数:滚动的元素对象、目标滚动距离、当前滚动距离。此函数递归地调整第一个子元素的`marginTop`属性,当文本滚动至顶端时,会将第一个子元素复制并移动到最后,然后重置其`marginTop`,形成...
14.24 实用计算器 14.25 前面补0的方法 第15章 图形、图像的特效 15.1 图片变形效果 15.2 图像的翻转效果 15.3 图像的模糊效果 15.4 图像的水印效果 15.5 图形淡出淡隐 15.6 图像的渐隐播放效果 15.7 文字环绕图片 ...
1. `DWRUtil` 是DWR提供的一个实用工具类,包含了多种用于操作DOM元素和数据的方法。例如: - `DWRUtil.selectRange("selectRangeBasic", 5, 15)`:此方法可以选中指定文本框中的特定字符范围,这里是从第五个字符...
总的来说,动量克隆是一款集成了多种功能的JavaScript应用,它充分利用了JavaScript的特性来提供一个全方位的个人生产力工具。其设计考虑了用户体验和实用性,结合了现代Web技术,实现了高效的时间管理和生活助手...
本书不同于其他JavaScript书籍的地方在于它采用了八个实际工作中的脚本案例进行讲解,确保了每个案例都有其实用价值,并能够提升网页的可用性。 #### 二、上下文与背景 1. **CSS革命**:随着CSS的出现和发展,网页...
总的来说,JMap类是JavaScript中实现键值对存储的一个实用工具,它提供了一种组织和操作数据的方式,特别是在没有原生Map支持的环境下。通过学习和使用JMap,可以加深对JavaScript面向对象编程的理解,并提升代码的...
在这个例子中,`words`就是一个数组,包含了三个字符串元素。 数组有很多内置的方法,可以帮助我们进行各种操作: 1. `push()`: 在数组末尾添加元素。 2. `pop()`: 移除并返回数组的最后一个元素。 3. `shift()`: ...
"js-todo-clone"项目是一个使用JavaScript语言实现的简易待办事项应用的克隆版。这个项目旨在帮助初学者了解和实践JavaScript的基础知识,以及前端开发的基本流程。通过分析和学习这个项目,我们可以深入理解...