var User = Parse.User.extend({
// instance members
}, {
// types
TYPE_TRAINER : 1,
TYPE_ATHLETE : 2,
types: {
TYPE_TRAINER : 'Trainer',
TYPE_ATHLETE : 'Athlete'
}
});
我希望TYPE_TRAINER
和TYPE_ATHLETE
维护1
之前定义的2
和types
的值,以便我可以使用
types
对象。
如果您不了解Parse,Parse.User
是Backbone.Model
的扩展名。
谢谢!
答案 0 :(得分:1)
您在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);
它比您可能想要的代码更多,但它是实现您想要的唯一方法,因为对象文字语法。
答案 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
的扩展名。