获取javascript中构造函数本身内部的原型构造函数的名称
是否可以在javascript中获取类本身内部的类名称?它对于在中间件中动态创建的类上进行递归非常有用。 我认为这是一篇非常不恰当的帖子-因此我最好定义我想要解决的问题:获取javascript中构造函数本身内部的原型构造函数的名称,javascript,jquery,Javascript,Jquery,是否可以在javascript中获取类本身内部的类名称?它对于在中间件中动态创建的类上进行递归非常有用。 我认为这是一篇非常不恰当的帖子-因此我最好定义我想要解决的问题: MyClass = function(){ this.classname = ??? // Here is required and needed to store as a property } MyClass.prototype.log = function(){ alert(this.classname);
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 A() {
alert(this instanceof this.constructor);
}
var a = new A();
您可以通过以下方式在控制台中检查.prototype
console.dir(A.prototype)
命令您可能正在查找此命令:
function MyClass() {};
var myInstance = new MyClass();
console.log(myInstance.constructor.name === "MyClass");
// true
要使其工作,必须如上所述声明函数,而不是使用MyClass=function(){}
。然后,使用函数的属性,利用原型链(当查询构造函数属性时)
如果您需要在构造函数中直接访问,也可以使用构造函数引用:
function MyClass() { console.log(this.constructor.name === "MyClass"); };
var myInstance = new MyClass();
// true
这个问题涉及类似的主题,可能对您也很有用:
Javascript没有类。@alex23:你可以称它为类,也可以不称它为类。JavaScript没有这个关键字(尽管它是保留的),但是您可以获得与原型Java类相同的功能。对于OOP人员来说,说“类”要比说“链接到同一原型对象的对象”容易得多。@PavelS:事实上,这是万恶之源:试图将javascript强加于您最喜欢的基于类的OOP语言是在将立方体推过圆圈:您将得到在某种程度上模拟类的不可理解的框架,但如果您接受javascript本机模型,您可以做得更好,它可以移动上下文,可以从多个对象导入成员,以及其他与基于类的语言不兼容的强大内容。@PavelS。这是不同的范例:如果Java、PHP或C#是您的第一语言,那么忘记模式,从头开始。这就像在OOP中使用过程风格——您得到贫血域模型的反模式。如果你想成为一名优秀的javascript程序员,忘记类吧。别忘了提到这是一个非标准属性,并且不是所有地方都支持它@铺路。我在构造函数/原型上下文中工作,不以这种方式声明函数。它在我的上下文中是怎样的?构造函数上下文总是指向新创建的对象(除非它在没有new
的情况下作为公共函数调用,这应该永远不会发生)。如果在原型中声明相同的函数,则其工作方式完全相同:MyClass.prototype.protF=function(){console.log(this.constructor.name);}代码>你知道上面写的(现在更好)原型构造函数上的代码是什么吗?