我有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/