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

Get the name of a prototype constructor inside the constructor itself in javascript

本文关键字:构造函数 原型 获取 javascript      更新时间:2023-09-26

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

您可能正在寻找这个:

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

这个问题涉及类似的主题,它可能对你也有用:从Javascript函数引用获得名称字符串?

如果"class"定义正确,则类对象具有构造函数属性,该属性是对类对象的引用。

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

你可以在控制台通过

检查A.prototype
console.dir(A.prototype)
命令