美文网首页
js 实现 clone()

js 实现 clone()

作者: 江火渔枫 | 来源:发表于2016-08-04 15:25 被阅读81次

1.基本数据类型 -- 指向即clone

var num = 1000;
var cloneNum = num;
num = 999;
console.log( cloneNum )   // 1000

2.非基本数据类型 -- 指向是引用 用方法实现clone

错误方式

var arr = [1,2,3];
var cloneArr = arr;
arr[0] = 99;//注意这里只是改变arr中的一个值
console.log( cloneArr )   // [99, 2, 3]

//扩展  注意理解引用
arr = ["a","b","c"];      //arr指向新的存储空间 
console.log( cloneArr )   // [99, 2, 3]

解决方法

var clone = function( obj ){
    var o; 
    if( typeof obj === "object" ){
        if ( obj === null ) {
            o = null;
        }else if ( obj instanceof Array  ) {
            o = [];
            for (var i = 0; i < obj.length; i++) {
                o.push( clone( obj[i] ) );  //**确保数组内的任何类型数据均能被正确的clone
            };
        }else{
            o = {}
            for ( var j in obj ) {
                o[j] = clone( obj( j ) )
            };
       }
    }else{
        o = obj;
    }
    return o;
}

var cloneObj = clone([null,[1,2,3],"99",100]); 
cloneObj   //[null, Array[3], "99", 100]

3.其他 dom节点克隆

var mainDom = document.getElementById('main');
var cloneMain = mainDom.cloneNode();
var cloneMainDeep = mainDom.cloneNode( true );  //深度克隆 包括其子节点

相关文章

  • js 实现 clone()

    1.基本数据类型 -- 指向即clone 2.非基本数据类型 -- 指向是引用 用方法实现clone 错误方...

  • 其他设计模式

    1. 创建型 ◆原型模式概念:◆clone自己,生成一个新对象◆java默认有clone接口,不用自己实现 JS中...

  • 其他设计模式

    一、原型模式 概念:clone自己,生成一个新对象;Java默认有clone接口,不用自己实现UML类图JS中的应...

  • rust基础学习总结

    1,对象实现Clone等接口 impl Clone for Obj { fn clone(&self)->Se...

  • JDK 之 如何实现clone方法

    JDK 之 如何实现clone方法 clone方法实现 测试类:Human、Student、Teacher、Mat...

  • 前端原型基础面试题

    阅读下面的代码,依据打印结果给出clone的实现方法: function clone(obj){ //实现方法 }...

  • JS Deep Clone

    Object.assign 可以实现一层的copy,于是我想用这个方法来迭代复制每一层的,实现deep clone...

  • js clone obj

    深度克隆JavaScript对象是困难的,并且也没有什么简单的解决方案。你可以使用原生的解决方案:JSON.par...

  • 原型模式——对象clone

    Java中对象的clone可以通过Object中的clone()来实现,步骤如下:1、实现cloneable接口(...

  • 【Java】对Object.clone的理解

    Object.clone的理解 通过实现Cloneable接口和重写clone方法可以实现拷贝对象。 这里clon...

网友评论

      本文标题:js 实现 clone()

      本文链接:https://www.haomeiwen.com/subject/noucsttx.html