assert.deepStrictEqual(actual, expected[, message]):
对象的类型标签应该相同。
"类型标签"
的含义是什么const date = new Date();
const object = {};
const fakeDate = {};
Object.setPrototypeOf(fakeDate, Date.prototype);
// Different type tags:
assert.deepStrictEqual(date, fakeDate);
typeof date
和typeof fakeDate
,结果均为object
,但不同的类型标记
答案 0 :(得分:2)
Javascript中的类型标记,是指typeof
例如对于原始值:
typeof({}) // returns 'object', this is the type tag
对于非原始的:
Object.getPrototypeOf(new Date) // returns 'Date {}' this is the type tag
如果typeof
与Date一起使用,它将返回object
,这是正确的,因为这将是原始值的类型标记,这就是使用Object.getPrototypeOf
更准确的原因。
在第一次JS实现中,类型标记存储在前1-3位,其余29-31包含实际数据。
NodeJS文档所说的,比较两个对象时Object.getPrototypeOf
函数的结果必须相同才能被视为相等。