想把两个对象赋给另一个对象,用apply怎么实现?
比如
var a = {"A":"a"};
var b = {"B":"b"};
var c;//把a,b赋值给c,让c有"A","B"属性

解决方案 »

  1.   

    或者不用apply的话有没有其他可行的方法?
      

  2.   

    var c={};
    $.extend(c,a,b);
    //---------------------------------用 apply太绕  还要给a b 对象加方法才行 如下
    var a ={a:1,aa:2,aaa:3,extend:function(obj){
    for(var name in obj)
    this[name] = obj[name];
    }},
    c ={c:1,cc:2,ccc:3,extend:function(obj){
    for(var name in obj)
    this[name] = obj[name];
    }}
    b={};
    a.extend.apply(b,[a]);
    c.extend.apply(b,[c]);
    alert(b.toSource())
      

  3.   

    如果有单独的extend函数  是可以不需要 给 a,b加方法的 var extend = function(){
    var target = arguments[0] || {}, i = 1, length = arguments.length, deep = true, options;
    if ( typeof target === "boolean" ) {
    deep = target;
    target = arguments[1] || {};
    i = 2;
    }
    if ( typeof target !== "object" && Object.prototype.toString.call(target)!="[object Function]")
    target = {};
    for(;i<length;i++){
    if ( (options = arguments[ i ]) != null )
    for(var name in options){
    var src = target[ name ], copy = options[ name ];
    if ( target === copy )
    continue;
    if ( deep && copy && typeof copy === "object" && !copy.nodeType ){
    target[ name ] = arguments.callee( deep, src || ( copy.length != null ? [ ] : { } ), copy );
    }   
    else if(copy !== undefined)
    target[ name ] = copy;                       
    }

    }
    return target;           
    }; var a ={a:1,aa:2,aaa:3,aaaa: function(){}},
    c ={c:1,cc:2,ccc:3,cccc:function(){}}
    b={};
    extend(b,a,c);
    alert(b.toSource());
      

  4.   

    这么写?貌似不行?
    var a = {"A":"a"};
    var b = {"B":"b"};
    var c = new Object();
    $.extend(c,a,b);
    alert(c.A);
      

  5.   

    要引入jq
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <style type="text/css">
    *{ padding:0; margin:0;}
    </style>
    </head>
    <body>
    <div>
    <script src="http://common.cnblogs.com/script/jquery.js" type="text/javascript"></script>
    <script type="text/javascript">
    var a = {"A":"a"};
    var b = {"B":"b"};
    var c = new Object();
    $.extend(c,a,b);
    alert(c.A);
    </script>
    </body>
    </html>
      

  6.   


    var a = {"A":"a"};
    var b = {"B":"b"};
    var c;
    c=a;
    for(var i in b){
      c[i] = b[i];
    }
    console.log(c);
      

  7.   

    简单的写了个最暴力的extend
    var a = {"A":"a"};
    var b = {"A":"xxxxx","B":"b"};
    function extend(a,b){
        for(var n2 in b){
            a[n2]=b[n2];
        }
        return a;
    }
    var c=extend(a,b);
    alert(c.B);