Object.identical.js实现JavaScript对象的精确比较
Object.identical() 函数用于确定两个给定参数是否完全相同,这意味着:两者都具有相同的属性和值、相同的数组元素或相同的原始值。具体来说:若对象的所有属性及对应的值一致,则两个对象相同;若数组的每个元素一致,则两个数组相同;对于原始类型,要求两者 ===。
实现此功能可以借助 JSON.stringify()
方法,但需谨慎扩展原始类型(如 Object 类型),因为在 JavaScript 中,对象的属性顺序是无序的。例如:
Object.identical({ x: 19, y: 83 }, { x: 19, y: 83 }); // true
Object.identical({ x: 19, y: 83 }, { x: 19, y: 33 }); // false
注意,在 JavaScript 中,对象成员无排序属性,例如:
var oldClient = { id: 0, name: "Alice" };
var newClient = { name: "Alice", id: 0 };
// 即使属性顺序不同,仍视为相同对象
Object.identical(oldClient, newClient); // true
要确保对象间精确比较的正确性,建议采用严格递归的比较方式,以规避 JSON.stringify()
对于循环引用和属性顺序的限制。
下载地址
用户评论