在我的应用程序中,我有一个处理Canvas ImageData的函数.它看起来像这样:
function processData(imagedata, filters) {
var data = imagedata.data;
//manipulate data with filters
imageData.data = data;
return imageData;
}
Run Code Online (Sandbox Code Playgroud)
我一直在用它:
var imageData = processData(imageData, {...});
Run Code Online (Sandbox Code Playgroud)
但是因为imageData对象是通过引用传递的,所以它也会像这样工作:
processData(imageData, {...}); // no assignment
Run Code Online (Sandbox Code Playgroud)
我已经在我的项目中找到了一个点,我需要能够处理一些imageData,同时仍然可以访问原始数据.我的第一次尝试类似于以下内容:
var originalData = imageData;
var processedData = processData(imageData, {...});
Run Code Online (Sandbox Code Playgroud)
这当然会导致相同的imageDatas.
所以我的第二个想法是编辑processsData函数,以便它以某种方式操纵imageData的副本,而不是传递的imageData.我尝试这样做的所有尝试都失败了,或者效率非常低.只是想知道是否有一种特殊的方法来做到这一点.提前致谢.