我有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);


现在如何确定此变量是circle还是pizza

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

谢谢!

最佳答案

通过将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

关于javascript - 如何识别原型(prototype)类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14253058/

10-13 04:43
查看更多