为什么isPrototypeOf返回false,但我可以上原型链?

时间:2015-02-14 22:33:05

标签: javascript

也许我对原型继承的理解是关闭的。有趣的是我继承了我的对象,但仍然返回false。对不起,对于那些对我不利的人来说,这是一个愚蠢的问题。

是的,我故意拼写我的变量和/或对象用于演示目的,是的,我故意试图使用.create作为反对new()。

var VehiclePrototype = {
   type: "car"
};

var carPrototype = Object.create(VehiclePrototype);

carPrototype.wheels = null;
carPrototype.make = null;
carPrototype.model = null;

var jamesCar = Object.create(carPrototype);

var x = jamesCar.type
alert(x);

alert(Object.isPrototypeOf(jamesCar, VehiclePrototype));  //false

1 个答案:

答案 0 :(得分:2)

您正在调用该功能。尝试:

alert(VehiclePrototype.isPrototypeOf(jamesCar));

.isPrototypeOf()函数位于Object 原型上 - 这意味着它可以作为来自任何对象的方法调用。您将其称为要测试的对象上的方法,以查看它是否是某个其他对象的原型。 (另一个对象是参数。)

请注意,您的代码不是错误,因为它实际上不是错误,至少在JavaScript术语中。你的调用是询问Object构造函数是否是“jamesCar”对象的原型,它显然不是。