如何使用jquery或javascript覆盖值?
我想重写值,这样只更改现有变量,而不添加任何附加变量 例如:如何使用jquery或javascript覆盖值?,javascript,jquery,Javascript,Jquery,我想重写值,这样只更改现有变量,而不添加任何附加变量 例如: rectangle : { "width" : 0, "height" : 0, "r" : 0, "stroke" : "#000000", "stroke-width" : 1, "stroke-dasharray" : "No", "fill-opacity" : 1.0, "stroke-op
rectangle : {
"width" : 0,
"height" : 0,
"r" : 0,
"stroke" : "#000000",
"stroke-width" : 1,
"stroke-dasharray" : "No",
"fill-opacity" : 1.0,
"stroke-opacity" : 1.0,
"rotation" : 0,
"transform" : ""
}
需要过度劳累
结果应为:(不应附加字体)
如果要使用\u newProperties
的属性更新矩形的现有属性,则必须使用for…in
循环:
for (var prop in _newProperties) {
if (rectangle.hasOwnProperty(prop)) {
rectangle[prop] = _newProperties[prop];
}
}
rectangle.hasOwnProperty
确保rectangle
实际具有该属性,并检查它是否是真正的rectangle
属性,而不是原型链中较高的属性。使用hasOwnProperty
函数相对简单:
for(var key in _newProperties) {
if(rectangle.hasOwnProperty(key)) {
rectangle[key] = _newProperties[key];
}
}
这将遍历\u newProperties
中的键,并将值写入矩形
如果矩形
具有相同名称的属性。请注意,通过原型继承的属性将被忽略,因为hasOwnProperty
将为它们返回false
。Great。写一些代码。为什么我会得到否定点?我可以使用jquery extend,但它会添加我不想要的新值。@user1595858:您唯一的选择是迭代\u newProperties
中的属性,检查每个属性的名称是否为font-
,如果不是以这个名字开头的话,就把它加进去。我以为jquery有某种方法可以做到这一点,所以我把这个question@Blender不,我认为这不是OP想要的行为。我认为OP正在寻找类似于$.extend()
的东西,但不想将新属性从第二个对象添加到第一个对象。更多的是一个“交叉点”而不是一个“联合点”(尽管这仍然不精确)。
for (var prop in _newProperties) {
if (rectangle.hasOwnProperty(prop)) {
rectangle[prop] = _newProperties[prop];
}
}
for(var key in _newProperties) {
if(rectangle.hasOwnProperty(key)) {
rectangle[key] = _newProperties[key];
}
}