0
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和值,以便我可以在模板中使用该对象。2typestypes

如果您不了解 Parse,Parse.User它是Backbone.Model.

谢谢!

4

2 回答 2

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

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

于 2012-06-05T02:50:01.180 回答
0

Parse.Object Javascript 文档说:

您应该致电:

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

或者,为了骨干兼容性:

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

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

于 2012-06-05T02:48:49.037 回答