获取Backbone Model实例的模型/类名

Bla*_*sad 26 javascript coffeescript backbone.js

给定一个Backbone模型的实例,我怎么知道这个实例的"类"(可以这么说)?

例如:

class Car extends Backbone.Model

mycar = new Car()
Run Code Online (Sandbox Code Playgroud)

而我需要的是:

mycar.modelName # => 'Car'
Run Code Online (Sandbox Code Playgroud)

Rob*_*ode 23

我尝试了Mitch的建议,但在Chrome中,model.constructor.name总是""适合我.

我选择使用惯例.我现在使用扩展的第二个参数创建一个类属性,其工作方式如下:

directory.models.SomeModel = Backbone.Model.extend({ 
    //  usual model instance stuff
}, {
    modelType: "SomeModel"   // class property
});
Run Code Online (Sandbox Code Playgroud)

我发现我总能得到我想要的东西:

var mt = model.constructor.modelType;
Run Code Online (Sandbox Code Playgroud)


Mit*_*tch 14

在编写时,您可以通过执行以下操作获取模型的类名:

model.constructor.name
Run Code Online (Sandbox Code Playgroud)

这适用于Chrome浏览器.

  • 请注意,如果您使用像Jammit这样的minifier,这将不起作用,构造函数将在打包后更改. (15认同)

Jay*_*ayC 10

我认为这一般都有问题.我打算提出一些这里提到的选项(如何在JavaScript中获取对象类型的名称?)但我遇到了第一个选项的问题.你总是可以延长你所有的车型有返回的"名称"为模式的功能,但我能理解为什么您可能会发现不尽如人意.