Javascript 主干/解析中的类成员相互使用

Javascript 主干/解析中的类成员相互使用,javascript,class,backbone.js,Javascript,Class,Backbone.js,我想让TYPE\u TRAINER和TYPE\u atternate维护1和2的值,如types对象之前定义的,以便我可以在模板中使用types对象 如果您不了解Parse,Parse.User是Backbone.Model的扩展 谢谢 报告说: 你应致电: var User = Parse.User.extend({ // instance members }, { // types TYPE_TRAINER : 1, TYPE_ATHLETE : 2,

我想让
TYPE\u TRAINER
TYPE\u atternate
维护
1
2
的值,如
types
对象之前定义的,以便我可以在模板中使用
types
对象

如果您不了解Parse,
Parse.User
Backbone.Model
的扩展

谢谢

报告说:

你应致电:

var User = Parse.User.extend({
    // instance members
}, {
    // types
    TYPE_TRAINER : 1,
    TYPE_ATHLETE : 2,
    types: {
        TYPE_TRAINER : 'Trainer',
        TYPE_ATHLETE : 'Athlete'
    }
});
或者,对于主干网兼容性:

var MyClass = Parse.Object.extend("MyClass", {
    // Instance properties
}, {
    // Class properties
});

如果您想要扩展
Parse.User
“类”(它是一个对象,而不是一个类),您需要如上所述包含
className
,因为
Parse.User
本身就是
Parse.object

的一个扩展,在JavaScript对象文本中无法直接实现您的请求。对象文字始终是左侧/键侧的文字值

最接近的方法是使用
TYPE_TRAINER
TYPE_TRAINER
键作为变量,通过方括号语法分配值,以访问对象键/值对:

var MyClass = Parse.Object.extend({
    className: "MyClass",
    // Other instance properties
}, {
    // Class properties
});
这将导致
obj
对象如下所示:

var a = 1;
var b = 2;

var obj = {};
obj[a] = "a";
obj[b] = "b";
因此,您可以这样做,以在代码中获得所需内容:


{
  1: "a",
  2: "b"
}

它的代码比您可能想要的要多,但由于对象文字语法,它是实现您想要的内容的唯一方法。

类型
不是我从这里看到的数组,谢谢。我已经相应地编辑了这个问题。我给一位解析开发人员发了电子邮件,告知他们扩展Parse.User对象,以便根据我的喜好覆盖默认功能(例如,在保存之前对对象进行主干样式验证)。我还认为您没有抓住问题的关键。PHP是我见过的为数不多的失败之一。下一个是异步模块加载-我再也不能依赖PHP的_autoload:(感谢您的帮助!

var userMethods = {
    // types
    TYPE_TRAINER : 1,
    TYPE_ATHLETE : 2
};

userMethods[userMethods.TYPE_TRAINER] = 'Trainer';
userMethods[userMethods.TYPE_ATHLETE] = 'Athlete';

var User = Parse.User.extend({
    // instance members
}, userMethods);