我正在使用简单的类机制:
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 Developer Tools中记录对象时,会看到“> NewClass {…}”。因为方法“ define”中的变量称为“ NewClass”。我想在控制台中看到不同的类名。我怎样才能做到这一点?
我试过了
通过新函数评估(名称,
function ${name}{ /* code */
)protoObj.constructor = {名称:名称}
令o = {}; o [name] = function(){...};让NewClass = o [name]
Object.defineProperty(NewClass,'name',{get ...
NewClass.name =名称; //抛出错误
附言对不起我的英语不好
最佳答案
您可以使用Function构造函数创建一个新对象,并为其命名:
var NewClass = new Function(
"return function " + name + "(){ }"
)();
JsFiddle Example