Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-检查对象中是否存在原型实例_Javascript_Oop_Prototype - Fatal编程技术网

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
?@jt0dd
instanceof
运算符也检查继承的构造函数,但
构造函数不检查。