如何识别原型类型?

时间:2013-01-10 07:49:06

标签: javascript inheritance types prototypejs

我有两个班,基地和孩子:

// 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);

我现在如何识别此变量是circle还是pizza

我知道我可以添加一个函数来返回我的名字或者保存带有类型名称的属性,但我想知道是否有其他方法而不更改我的任何类。

谢谢!

2 个答案:

答案 0 :(得分: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继承,因此您可以检查某些内容是circle而不是pizza

(new circle) instanceof pizza; // false

答案 1 :(得分:1)

您可以使用instanceof

var p = new pizza();
console.log(p instanceof pizza) //true
console.log(p instanceof circle) //true also