Javascript 如何扩展jquery对象
我曾尝试使用Stackoverflow上的其他示例来扩展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); 看起来你把它们正确地扩展
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想要实现什么吗?