【发布时间】:2013-08-12 13:48:37
【问题描述】:
我有一种情况,我需要在我的应用程序中的某个时刻输入构造函数的名称
instance.constructor.name
但是,当我创建构造函数时,我将其名称存储在一个变量中。所以,让你知道我想要什么
var nameOfTheFunction = "Test" ;
var BarFoo = function() { /* do stuff */ } ;
BarFoo.name = nameOfTheFunction ;
这当然行不通,因为 name 属性是只读的。
那么是否可以动态创建一个构造函数,其最终结果是它创建的实例将具有的结果
instance.constructor.name === nameOfTheFunction
更新:在下面查看我的评论,因为它符合我的要求。不过,对于这个问题,感谢答案,我最初是在寻找这个
(new Function( 'base', 'return function ' + Foo.name + '(){ base.apply(this, arguments); };'))(Foo) ;
这个解决方案的问题在于,这里创建的东西不是 Foo 的实例,除非您执行 this 之类的操作,这让我在下面的评论中找到了解决方案!
【问题讨论】:
-
我真的不知道这样做的好处。你能解释一下你正在尝试什么吗?
-
你说得对,我找到了更简单的方法:jsfiddle.net/jeanluca/8ztAU/1
标签: javascript function constructor instance