我正在编写一个具有不同形状的 javascript 图形游戏,一种猜测形状。每个都是较小形状的不同组合。shapemodel 构造函数是具有 3 种不同方法的颜色,所有函数调用各种绘图代码。我已经复制了列表的创建方式。
var shapeList = [];
var shapeArray = [
new shapeModel("#ff0", FShape1, circleSegment, miscShape1),
new shapeModel("#f00", FShape1, circleHollow, miscShape1),
new shapeModel("#000", FShape1, circleSegment, miscShape2),
new shapeModel("#08f", FShape2, circleSegment, miscShape1),
new shapeModel("#060", FShape2, circleHollow, miscShape1),
new shapeModel("#007", FShape2, circleSegment, miscShape2),
new shapeModel("#0f7", FShape1, circleHollow, miscShape2),
new shapeModel("#888", FShape2, circleHollow, miscShape2)
];
shapeArray.forEach(function (value, index) {
shapeList.push(value);
});
function shapeModel(c, fshape, circle, misc) {
var newElement = {
shapeColour: c,
startX: 200,
startY: 200,
thickness: 6,
fullShape: function () {
fshape(this);
circle(this);
misc(this);
}
}
return newElement;
}
我的问题是通过值而不是引用将整个列表复制到一个新列表,然后随机选择 8 个较大形状中的 1 个,而不会干扰原始列表。
var tempList = shapeList.slice(0);
不创建独立列表但至少复制所有元素
var tempList = JSON.parse(JSON.stringify(shapeList));
不复制函数并将它们保留为“未定义”。可能有无数的解析和字符串破解,但它变得非常混乱。
我真的可以用函数来做到这一点,还是我需要重新考虑整个结构?
qq_遁去的一_1
相关分类