Backbone / Parse中的类成员互相使用

时间:2012-06-05 01:55:51

标签: javascript class backbone.js

var User = Parse.User.extend({
    // instance members
}, {
    // types
    TYPE_TRAINER : 1,
    TYPE_ATHLETE : 2,
    types: {
        TYPE_TRAINER : 'Trainer',
        TYPE_ATHLETE : 'Athlete'
    }
});

我希望TYPE_TRAINERTYPE_ATHLETE维护1之前定义的2types的值,以便我可以使用

中的types对象。

如果您不了解Parse,Parse.UserBackbone.Model的扩展名。

谢谢!

2 个答案:

答案 0 :(得分:1)

您在JavaScript对象文字中无法直接询问的内容。对象文字在左侧/键侧始终是文字值。

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

var a = 1;
var b = 2;

var obj = {};
obj[a] = "a";
obj[b] = "b";

这将导致obj对象看起来像这样:


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

所以你可以做这样的事情,在你的代码中得到你想要的东西:


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);

它比您可能想要的代码更多,但它是实现您想要的唯一方法,因为对象文字语法。

答案 1 :(得分:0)

Parse.Object Javascript documentation说:

您应该致电:

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

或者,对于Backbone兼容性:

var MyClass = Parse.Object.extend({
    className: "MyClass",
    // Other instance properties
}, {
    // Class properties
});

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