js深度繼承的非遞迴方法

davidtim發表於2021-09-09
 // start
  var aaa= function() {
 var options, name, src, copy, copyIsArray, clone,
    target = arguments[ 0 ]  {},
    i = 1,
    length = arguments.length,
    deep = false;

// Handle a deep copy situation
if ( typeof target === "boolean" ) {
    deep = target;

    // Skip the boolean and the target
    target = arguments[ i ]  {};
    i++;
}

// Handle case when target is a string or something (possible in deep copy)
if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
    target = {};
}

// Extend jQuery itself if only one argument is passed
if ( i === length ) {
    target = this;
    i--;
}

for ( ; i 0){
                    var temb=ary.shift();

                if( jQuery.isPlainObject( temb.value ) ( copyIsArray = jQuery.isArray( temb.value ))){
                mem[temb.name]=jQuery.isPlainObject( temb.value )?{}:(jQuery.isArray( temb.value ) ? [] : '');            
                     for(var k in temb.value){          
                       ary.push({name:temb.name+'.'+k,value:temb.value[k]});
                       mem[temb.name+'.'+k]=jQuery.isPlainObject( temb.value[k] )?{}:(jQuery.isArray( temb.value[k] ) ? [] : '');            
                     }                        
                  }else{
                  var aryA=temb.name.split(".");
                  var tembName='';

                  for(var n=1,len=aryA.length;n

};
var a={a:{a:1,b:2},b:3,c:{e:44,ff:[1,4,5]}};
var b={};
aaa(true,b,a);
alert(b.c.ff[2]);

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3349/viewspace-2807389/,如需轉載,請註明出處,否則將追究法律責任。

相關文章