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

Class members in Backbone/Parse using each other

本文关键字:成员 主干      更新时间:2023-09-26
var User = Parse.User.extend({
    // instance members
}, {
    // types
    TYPE_TRAINER : 1,
    TYPE_ATHLETE : 2,
    types: {
        TYPE_TRAINER : 'Trainer',
        TYPE_ATHLETE : 'Athlete'
    }
});

我希望TYPE_TRAINERTYPE_ATHLETE维护在types对象之前定义的12的值,以便我可以在模板中使用types对象。

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

谢谢!

你所问的在 JavaScript 对象文字中是不可能直接实现的。对象文字始终是左侧/键侧的文本值。

您可以得到的最接近的是使用 TYPE_TRAINER 键和TYPE_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);

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

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的扩展。