我曾尝试在 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
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
or array
,它将被第二个或后续对象中具有相同键的属性完全覆盖。
值不会合并。这可以通过检查 的值在下面的示例中看到banana
。但是,通过传递true
第一个函数参数,对象将被递归合并。