0

我有 2 个类,基类和子类:

// base class
function circle(radius){
    this.radius = radius;
    return true;}

// child class
function pizza(flavour, radius){
    this.radius = radius;
    this.flavour = flavour;
    return true;}

// Inheritance
pizza.prototype = new circle();

现在我正在创建一个披萨实例:

var myPizza = new pizza("Onion", 5);

我现在如何确定这个变量是circleor pizza

我知道我可以添加一个函数,该函数将返回名称或使用类型名称保存属性,但我想知道是否有另一种方法而不更改我的任何类。

谢谢!

4

2 回答 2

4

通过将类的原型设置为pizza类的实例circle,任何实例都pizza将自动继承自circle. 结果,instanceof操作员将检查实例的构造函数:

(new pizza) instanceof pizza; // true
(new circle) instanceof circle; // true

并且还将沿着原型链检查实例继承自的任何其他构造函数:

(new pizza) instanceof circle; // true
(new pizza) instanceof Object; // true

因为circle不是继承自pizza,所以您可以检查某些东西是 acircle但不是 a pizzawith:

(new circle) instanceof pizza; // false
于 2013-01-10T07:57:02.330 回答
1

你可以使用instanceof

var p = 新披萨();
console.log(p instanceof Pizza) //true
console.log(p instanceof circle) //也是如此
于 2013-01-10T07:57:22.257 回答