在我的应用程序中,我有一个处理Canvas ImageData的函数。它看起来像这样:
function processData(imagedata, filters) {
var data = imagedata.data;
//manipulate data with filters
imageData.data = data;
return imageData;
}
我一直这样使用:
var imageData = processData(imageData, {...});
但是由于imageData对象被按引用传递,因此也可以这样使用:
processData(imageData, {...}); // no assignment
我在项目中遇到了这样的问题,需要在处理图像数据时仍然能够访问原始数据。我的第一次尝试类似于以下代码:
var originalData = imageData;
var processedData = processData(imageData, {...});
当然,这将导致两个相同的imageData。
因此,我的第二个想法是编辑processsData函数,使其以某种方式操作imageData的副本,而不是所传递的imageData。我所有尝试都失败了或者极度低效。只是想知道是否有一种特殊的方法可以做到这一点。提前感谢。