我不知道我做错了什么,但是这个代码在第一次执行更改我的library(raster)
r <- raster(nrow=18, ncol=36)
r$value <- 1:ncell(r)
r$area <- as.data.frame(area(r))$layer
head(as.data.frame(r))
ras_to_pol <- rasterToPolygons(r)
spplot(ras_to_pol, "area", main="Area of initial cells converted to polygons")
对象后,在第二次执行时我得到了非常大的变量(因为代码使用recipesData
)。
如果我使用调试器对象(recipesData)开始在这里更改:
recipesData
child[child_part] *= craft[part];
甚至是与child
无关的另一个变量。
这是我使用的代码:
recipesData
答案 0 :(得分:0)
JavaScript中的对象是通过引用传递的,而不是值。在getBasics
内,craft
是与recipeData
相同的基础数据的引用。 child
是对recipeData
个内部对象之一的引用。
因此,当您使用*=
为child
中的属性分配新值时,它会对recipeData
变量引用的相同数据进行操作。< / p>
答案 1 :(得分:0)
下面的子项只是对recipesData的引用。
if (recipesData.hasOwnProperty(part)) {
var child = recipesData[part];
break;
} else
child = null;
}
因此稍后会修改实际的recipesData。如果你想拥有数组的真实副本,你可以做到这一点,例如与slice()或concat()类似:
child = [].concat(recipesData[part]);