gpt4 book ai didi

javascript - 如何在 JavaScript 中的类工厂中设置类名?

转载 作者:行者123 更新时间:2023-12-03 08:47:35 24 4
gpt4 key购买 nike

我正在使用简单的类机制:

function define(SuperClass, name, proto)
{
let ProtoFn = function(){};
ProtoFn.prototype = SuperClass.prototype;
let protoObj = new ProtoFn;

var NewClass = function()
{
this.construct.apply(this, arguments);
};
_.extend(protoObj, proto,
{
constructor: NewClass,
_class: NewClass,
_parent: SuperClass
});
NewClass.prototype = protoObj;
NewClass.className = name;
NewClass.define = define.bind(null, NewClass);

return NewClass;
}

使用:

let UserModel = Model.define('UserModel', { /* UserModel proto */ });
let john = new UserModel( /* blabla */ );

好吧。但是当我在 Web 开发工具中记录对象时,我看到“> NewClass {…}”。因为方法“define”中的变量称为“NewClass”。我想在控制台中看到不同的类名。我怎样才能做到这一点?

我已经尝试过

  1. 通过 new Function(name, function ${name}{/* code */) 进行评估
  2. protoObj.constructor = {名称:名称}
  3. 让 o = {}; o[名称] = 函数(){...};让 NewClass = o[名称]
  4. Object.defineProperty(NewClass, '名称', { 获取...
  5. NewClass.name = 名称;//抛出错误

附注对不起我的英语

最佳答案

您可以使用 Function 构造函数创建一个新对象并为其命名:

var NewClass = new Function(
"return function " + name + "(){ }"
)();

JsFiddle Example

关于javascript - 如何在 JavaScript 中的类工厂中设置类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32818838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com