在我的應用程序中,我有一個處理Canvas ImageData的函數。它看起來是這樣的:在JavaScript中複製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
我已經到了我的項目中的一個地方,我需要能夠處理一些imageData,同時仍然可以訪問原始數據。我的第一次嘗試類似於以下內容:
var originalData = imageData;
var processedData = processData(imageData, {...});
這當然會導致相同的imageDatas。
所以我的第二個想法是編輯processsData函數,所以它以某種方式操縱imageData的副本,而不是傳遞的imageData。我所有嘗試這樣做的嘗試都失敗了,或者效率非常低下。只是想知道是否有一種特殊的方式來做到這一點。提前致謝。
您是否曾嘗試在將它傳遞給函數之前自行創建它的副本? – Pointy 2011-04-12 22:36:27
我在哪裏製作副本並不重要,但我只想找出一種方法來製作一個,很容易。 – 2011-04-12 22:37:20
這個「圖像數據」 - 這是你從畫布上回來的,對吧?如果是這樣,它只是一個數組...(*編輯*主要是一個數組) – Pointy 2011-04-12 22:44:22