В моем приложении есть функция, которая обрабатывает 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
Я пришел к точке в моем проекте, где мне нужно иметь возможность обрабатывать некоторые imageData, сохраняя при этом доступ к исходным данным. Моя первая попытка была похожа на следующее:
var originalData = imageData;
var processedData = processData(imageData, {...});
Это, конечно, приведет к идентичным imageDatas.
Поэтому моей второй мыслью было редактирование функции processsData, чтобы она каким-то образом манипулировала копией imageData, а не переданной imageData. Все мои попытки сделать это потерпели неудачу или были ужасно неэффективны. Просто интересно, есть ли особый способ сделать это. Заранее спасибо.