4

是否可以在 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();
4

2 回答 2

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?

于 2013-05-11T18:22:15.970 回答
1

如果“类”定义正确,则类对象具有构造函数属性,即对类对象的引用。

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

您可以通过以下方式在控制台中检查 A.prototype

console.dir(A.prototype)

命令

于 2013-05-11T18:20:32.707 回答