使用构造函数工厂,我希望在控制台中使用不同的名称来命名这些构造函数,同时在记录它们的实例时也是如此。
以下是我的问题的简化示例:
以下是我的问题的简化示例:
// Constructor factory //
function type(name, prototype) {
function Constructor() {}
Constructor.name ; // "Constructor"
// Constructor.name = name won't work properly.
Object.defineProperty(Constructor, 'name', { value:name }) ;
Constructor.prototype = prototype ;
window[name] = Constructor ;
return Constructor ;
}
// Creating constructor and instance //
type('Cat', { name:"", paws:4 }) ;
var chat = new Cat ;
// Tests //
Cat.name ; // "Cat" -> Correct name
Cat ; // Constructor() { ... } -> Incorrect name
chat ; // Constructor {name:"", paws:4} -> Incorrect name
在这种情况下,有没有办法显示正确的名称?
已经测试了最新版本的Chrome(67)。在这种情况下,我不想使用class
特性。
with(){}
或eval
代码,你无法影响控制台的输出。 - Jonas Wilms