假设我有一个基类“宠物”和“狗”和“猫”的子类。有没有一种通用的方法,我可以把一个任意的对象,我知道是一个“宠物”,并测试它是“狗”还是“猫”?
发布于 2022-04-11 17:58:02
您可以向对象请求它的constructor.name属性,或者如果您有对类的引用,则可以使用instanceof运算符:
class Pet {
constructor(name) {
this.name = name;
}
}
class Cat extends Pet {
sayHello() { console.log(`${this.name} miaows`) }
}
class Dog extends Pet {
sayHello() { console.log(`${this.name} barks`) }
}
const goofy = new Dog('Pluto');
const garfield = new Cat('Garfield');
console.log(goofy.constructor.name);
console.log(garfield.constructor.name);
console.log(goofy instanceof Dog);
console.log(garfield instanceof Cat);
请注意,Pet不应该知道Dog或Cat的存在(而且后两者都不应该知道另一个的存在)。
https://stackoverflow.com/questions/71831649
复制相似问题