这是一个关于QML的函数。不清楚为什么比较结果会有所不同?
...
function someFunction() {
var id1 = AAAAA.objectId // it is QByteArray property of C++ object
var id2 = BBBBB.objectId // it is QByteArray property of C++ object
var isEqual = id1 === id2
var isEqualToString = id1.toString() === id2.toString()
console.log("=============================")
console.log("id1: ", id1)
console.log("id2: ", id2)
console.log("isEqual: ", isEqual)
console.log("id1.toString(): ", id1.toString())
console.log("id2.toString(): ", id2.toString())
console.log("isEqualToString: ", isEqualToString)
}
...
控制台结果:
id1: 2607d35d-d9d0-49af-b944-3fc60993890a
id2: 2607d35d-d9d0-49af-b944-3fc60993890a
isEqual: false
id1.toString(): 2607d35d-d9d0-49af-b944-3fc60993890a
id2.toString(): 2607d35d-d9d0-49af-b944-3fc60993890a
isEqualToString: true
id1
和id2
的类型是什么?请注意,QByteArray不会自动映射到JS类型(请参见此处)。可能第一个比较发生在不相关的对象之间,因此失败。 - peppeQByteArray
无法转换为某些 QML/Js 类型。因此,这将是两个QObject
之间的比较,在这种情况下,AAAAA
和BBBBB
是真正不同的对象。我的意思是,内存中有两个不同的对象。 - folibis