gpt4 book ai didi

javascript - 如何测试两个 javascript 对象是否相似?

转载 作者:行者123 更新时间:2023-11-30 05:41:00 24 4
gpt4 key购买 nike

在 Javascript 中(请不要使用 jquery 或其他框架)我想测试 2 个(或更多)对象是否是同一类型的对象。

以下是一些示例对象:

function Person (firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
function Animal (name, type, age) {
this.name = name;
this.type = type;
this.age = age;
}
var family = {};
family.father = new Person ('John', 'Doyle', 33);
family.mother = new Person ('Susan', 'Doyle', 32);
family.pet = new Animal ('Jodie', 'Cat', 2);

鉴于上述对象,我想要一种通用方法来测试 family.father、family.mother 和 family.pet 是否来自相同“类型”的对象。我可以用通用的方式测试 Person 和 Animal 之间的区别吗?像这样的东西:

if ( sourceObject(family.father) === sourceOjbect(family.mother) ) {
alert('father and mother are the same type');
} else {
alert('father and mother are not from the same object... we could have problems.');
}
if (sourceObject(family.pet) !== sourceObject(family.father)) {
alert('the pet is a different type than the father');
} else {
alert('Perhaps it should be a child instead of a pet?');
}

或者可能是这样的:

if (isSameObject(family.pet, family.father)) {
alert('Perhaps it should be a child instead of a pet?');
} else {
alert('Father and pet are different.');
}

没有“sourceObject”函数,但我试图找出是否有某种东西可以做到这一点,或者有人找到了一种快速的方法来进行这种比较。

请注意,我不是要比较对象中的数据,而是要比较参与比较的对象的类型。我需要在不知道所涉及组件的确切组成的情况下执行此操作。例如,在上面的代码中,我可以测试“类型”属性,但这需要对对象有先见之明。我正在尝试编写一个通用函数,它不一定知道传递给它的对象的任何信息,除了它们本身的对象。

最佳答案

你可以这样比较它们的构造函数

family.father.constructor == family.mother.constructor

关于构造函数的 MDC

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor

JSFiddle

http://jsfiddle.net/8LvN5/

关于javascript - 如何测试两个 javascript 对象是否相似?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20830104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com