假设我们有一个抽象类 Animal:
function Animal(){};
Animal.prototype.communicate = function(metadata){
//ABSTRACT
};
然后我们有一个 Duck 类:
function Duck(){};
Duck.prototype = new Animal();
Duck.prototype.communicate = function(metadata){
console.log("Cuack!");
};
所以,我正在编写一个 Greasemonkey 脚本,我确实需要在本地存储中保存一些动物,以便在下次加载页面时检索它们(这种方式允许我重新创建与重新加载页面之前相同的实例) )。
所以,我真的需要创建的每个 Animal 的类名。我读过另一个类似的问题,他们获取类名的方式是:
var aDuck = new Duck();
console.log("ClassName: " + aDuck.constructor.name);
但是当我这样做时,我在控制台上得到“ClassName:Animal”。 P/d:我无法用原型(prototype)改变编程风格,这是一个要求...:(
有什么建议吗? 感谢您的宝贵时间!
最佳答案
Duck.prototype = new Animal();
这段代码是错误的;原型(prototype)继承的正确做法有点more complicated .
如果您无法直接更改它,您仍然可以在 Greasemonkey 中修复它:
Duck.prototype.constructor = Duck;
您需要为每个类(class)执行此操作。
关于javascript - 当对象是子类的实例时,如何获取对象的类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16344456/