0

我曾尝试在 Stackoverflow 上使用其他示例来扩展 jquery 对象,但没有成功。

    var z = {

        vars: {
            x: $('#c')
        }

    };

    var y = {

        v: $(this).val(a),
        h: $(this).html(a)

    };

    $.extend(y,z);

    alert(y.vars.h.x);
4

2 回答 2

1

看起来你让它们正确扩展,你只是在之后把它们叫错了。我将以下内容放在一起以帮助调试它的工作原理。

var z = {
    vars: {
        x: "var_Z.X"
    }
};

var y = {
    v: "var_Y.V",
    h: "var_Y.H"
};

$.extend( y, z );

// Output
    ( y.vars.x ) // var_Z.X
    ( y.v ) // var_Y.V
    ( y.h ) // var_Y.H

    ( z.vars.x ) // var_Z.X
    ( z.v ) // undefined
    ( z.h ) // undefined

http://jsfiddle.net/daCrosby/6YvHw/

于 2013-06-17T15:41:38.140 回答
0
jQuery.extend( target [, object1 ] [, objectN ] )

请记住,目标对象(第一个参数)将被修改,并且也将从$.extend().
但是,如果您想保留两个原始对象,可以通过传递一个空对象作为目标来实现:

var object = $.extend({}, object1, object2);

示例

var object1 = {
  apple: 0,
  banana: { weight: 52, price: 100 },
  cherry: 97
};
var object2 = {
  banana: { price: 200 },
  durian: 100
};

// Merge object2 into object1
$.extend( object1, object2 );

输出是

{"apple":0,"banana":{"price":200},"cherry":97,"durian":100}

说明

执行的合并$.extend()默认不是递归的;如果第一个对象的属性本身是objector array,它将被第二个或后续对象中具有相同键的属性完全覆盖。
值不会合并。这可以通过检查 的值在下面的示例中看到banana。但是,通过传递true第一个函数参数,对象将被递归合并。

参考:http ://api.jquery.com/jQuery.extend/

于 2015-06-30T06:57:58.423 回答