在javascript中获取构造函数本身内的原型构造函数的名称

时间:2013-05-11 18:14:51

标签: javascript jquery

是否可以在javascript中获取类本身的类名?它对我的中间件中动态创建的类的递归很有用。 认为这是一个非常不正确的帖子 - 所以我更好地定义了我想要解决的问题:

MyClass = function(){
  this.classname = ??? // Here is required and needed to store as a property
}

MyClass.prototype.log = function(){
   alert(this.classname); // The alert should be MyClass
}


var myClassObj = new MyClass();
myClassObj.log();

2 个答案:

答案 0 :(得分:3)

你可能正在寻找这个:

function MyClass() {};
var myInstance = new MyClass();
console.log(myInstance.constructor.name === "MyClass");
// true

要使其正常工作,您必须声明上述功能,而不是使用MyClass = function(){}。然后,使用函数的name属性,利用原型链(查询constructor属性时)。

如果您需要直接在构造函数中访问,请使用构造函数引用:

function MyClass() { console.log(this.constructor.name === "MyClass"); };
var myInstance = new MyClass();
// true

此问题涉及类似主题,它也可能对您有用: Get name as String from a Javascript function reference?

答案 1 :(得分:1)

如果“class”定义正确,则class对象具有contructor属性,它是对类对象的引用。

function A() {
  alert(this instanceof this.constructor);
}
var a = new A();

您可以通过

检查控制台中的A.prototype
console.dir(A.prototype)

命令