Javascript 如何扩展jquery对象

Javascript 如何扩展jquery对象,javascript,jquery,extend,Javascript,Jquery,Extend,我曾尝试使用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); 看起来你把它们正确地扩展

我曾尝试使用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);

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

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

请记住,目标对象(第一个参数)将被修改,并且也将从
$.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}
输出为

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}
说明

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()
执行的合并不是递归的;如果第一个对象的属性本身是
对象
数组
,它将被第二个或后续对象中具有相同键的属性完全覆盖。
这些值不会合并。通过检查
banana
的值,可以在下面的示例中看到这一点。但是,通过为第一个函数参数传递
true
,对象将被递归合并


参考资料:

你的意思是
y.vars.x
?在我回答之前我完全没有读过。这可能会有帮助:
y.vars.h.x
-y.vars.h应该来自哪里?尝试
警报(y.vars.x)$.extend本质上应该是将z与y合并,这样y就包括变量以及v和h。因此,在您的示例中,y.v起作用,y.h起作用,y.vars起作用,y.vars.x也起作用。但是y.vars.h.x毫无意义。您能再解释一下使用jQueryExtend想要实现什么吗?