我已尝试在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);
答案 0 :(得分: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
答案 1 :(得分: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()
执行的合并不是递归的;如果第一个对象的属性本身是object
或array
,则它将被第二个或后续对象中具有相同键的属性完全覆盖。
值未合并。通过检查banana
的值,可以在下面的示例中看到这一点。但是,通过传递true
作为第一个函数参数,对象将以递归方式合并。