我有两个 imageData 对象,它们通过相同的上下文从相同的画布获取。但是当比较它们时,它们并不相等,尽管它们应该包含相同的数据:
var canv = document.createElement("canvas");
canv.setAttribute('width', 300);
canv.setAttribute('height', 300);
var context = canv.getContext('2d');
context.fillStyle = "#ff0000";
context.fillRect(0, 0, 300, 300);
var imageData = context.getImageData(0, 0, 300, 300);
var imageData2 = context.getImageData(0, 0, 300, 300);
if (imageData == imageData2) {
console.log("Test1: same");
} else {
console.log("Test1: different");
}
if (imageData.data == imageData2.data) {
console.log("Test2: same");
} else {
console.log("Test2: different");
}
if (imageData == imageData) {
console.log("Test3: same");
} else {
console.log("Test3: different");
}
if (imageData.data == imageData.data) {
console.log("Test4: same");
} else {
console.log("Test4: different");
}
这段代码输出以下内容:
Test1: different
Test2: different
Test3: same
Test4: same
因此,将对象与自身进行比较时与比较imageData对象内部数据时可以按预期运行,但是不能与应该是相同副本的内容进行比较。
这是否是比较对象时存在的问题?或者我在从画布元素中获取数据方面漏掉了什么?
谢谢。