当前位置:首页>综合>正文

js中如何复制一个对象并获取其所有属性和属性对应的值 js怎么克隆对象

2023-04-30 03:45:41 互联网 未知 综合

 js中如何复制一个对象并获取其所有属性和属性对应的值 js怎么克隆对象

js中如何复制一个对象并获取其所有属性和属性对应的值

如果是使用了  JQ  EXTJS 的话本身就有 对象克隆的 函数库可以使用  如 extjs 使用

ext.ux.util.clone()
没有用这些的话 可以自己写一个 克隆函数  网上有资源  比如

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
functiondeepClone(obj){    varresult={},oClass=isClass(obj)
    // if(oClass==="Object"){
    //     result={}
    // }else if(oClass==="Array"){
    //     result=[]
    // }else{
    //     return obj
    // }
    for(key inobj){
        varcopy=obj[key]
        if(isClass(copy)=="Object"){
            result[key]=arguments.callee(copy)
        }elseif(isClass(copy)=="Array"){
            result[key]=arguments.callee(copy)
        }else{
            result[key]=obj[key]
        }
    }
    returnresult
}
functionisClass(o){
    if(o===null) return"Null"
    if(o===undefined) return"Undefined"
    returnObject.prototype.toString.call(o).slice(8,-1)
}

或者参考 extjs 的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 function(o) {  
   if(!o || object!== typeofo) {        returno    }   
    if(function=== typeofo.clone) {        returno.clone()    }   
     varc = [object array]=== object.prototype.tostring.call(o) ? [] : {}
     varp, v    
     for(p ino) {       
      if(o.hasownproperty(p)) {            v = o[p]           
      if(v && object=== typeofv) {               
       c[p] = ext.ux.util.clone(v)          
         }     else{          
               c[p] = v          
           }        
           }   
            }  
        returnc}

js怎么克隆对象

这题的意思是把一个对象中的内容一级一级的复制到另外一个对象中。用for(var i in obj)的方式就可以了。
至于类型,js虽然是弱类型,但其实是有类型的,如数字类型,就是Number,对象类型就是Object,String,Date,Array,Boolean,Function等,然要判断对象的类型也很简单,如:

var a = 2
a.constructor == Number// 判断是否为数值
a.constructor == String// 判断是否为字符串 a = "test"
a.constructor == Date// 判断是否为日期 a = new Date()
a.constructor == Array// 判断是否为数组 a = [1,"2",true]
a.constructor == Boolean// 判断是否为布尔型 a = true
a.constructor == Object// 判断是否为对象 a = {}
a.constructor == Function// 判断是否为方法类型 a = function(){}