我有一种情况,在我的应用程序中的某个时候需要构造函数的名称
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 的实例,除非你做这样的事情,这让我在下面的评论中找到了解决方案!