js中援用范例赋值(拷贝)题目

题目泉源

在js中,援用范例的变量援用的只是内存的地点信息,所以在用其给其他变量赋值时,另一个变量获得的是该内存地点,不是内存中的内容,所以在另一个变量转变某个值的时刻会反映在原始变量中。

比方:

var test={
    name:'jack',
    age:'23',
}
var test1=test
test1.name='rose'
console.log(test.name) //rose
console.log(test1.name) //rose

解决要领:

  • 如果是数组:

    最简朴的要领就是:
    var aArr = [0,1,2,3];
    var m = aArr.slice(0);

  • 通用的:对数组、对象都实用的(实在就是轮回遍历重新建一个):

    function clone(obj) {  
    var o;  
    if (typeof obj == "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 j in obj) {  
                    o[j] = clone(obj[j]);  
                }  
            }  
        }  
    } else {  
        o = obj;  
    }  
    return o;  
    } 
 
  • 节点克隆:

var p = document.getElementsByTagName("p")[0];  
var cP = p.cloneNode();//克隆p节点  
var cP = p.cloneNode(true);//克隆p节点,深度克隆,克隆节点以及节点下面的子内容。
    原文作者:jdd100419
    原文地址: https://segmentfault.com/a/1190000009885410
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞