JavaScript-检查对象中是否存在原型实例
我想检查一个对象,看看是否存在JavaScript-检查对象中是否存在原型实例,javascript,oop,prototype,Javascript,Oop,Prototype,我想检查一个对象,看看是否存在carDoor原型的任何实例 function carDoor(side) { this.side = side; } var Car = { "door1": new carDoor("left"), "door2": new carDoor("right") } 汽车物体有门吗?-我如何以适用于任何原型的方式进行检查? 假设您不知道或不控制属性的名称。在您的示例中,您可以执行以下操作: Car.door 1.constructor
carDoor
原型的任何实例
function carDoor(side) {
this.side = side;
}
var Car = {
"door1": new carDoor("left"),
"door2": new carDoor("right")
}
汽车物体有门吗?-我如何以适用于任何原型的方式进行检查?
假设您不知道或不控制属性的名称。在您的示例中,您可以执行以下操作:
Car.door 1.constructor===carDoor代码>
这将返回true。您可以使用instanceof
操作符:
for (key in Car) {
if (Car.hasOwnProperty(key)) {
if (Car[key] instanceof carDoor) {
// ...
}
}
}
if (Car.door2.constructor === carDoor)
// ...
你回答了你的问题。。或者至少一半,验证Car
对象属性的构造函数,它将返回true
if (Car.door2.constructor === carDoor)
// ...
至于命名惯例,我会给他们取名为CarDoor和car。酷。我不知道构造对象具有该属性。使用构造函数属性的两个答案(在撰写本文时)都假定您知道该属性的名称;考虑到您正在命名属性door1
(door2
等),检查该属性的存在应该足够了?如果我正在开发一个公共库,我需要检查某个原型实例,其中库的用户可以根据自己的需要命名原型实例,该怎么办@大卫·霍姆斯如果。。?好吧,这可能是添加到您的问题中的有用信息,让我对您的用例不那么困惑。哦,没有看到@ramdog也给出了这个答案。结合。与Car.door.constructor===carDoor
?@jt0ddinstanceof
运算符也检查继承的构造函数,但构造函数不检查。