请原谅我,如果这是一个愚蠢的问题,我现在已经做了iphone和android一段时间了,最近我需要为网络开发。 我使用parse.com来处理我的服务器请求。根据他们的documentation,我可以像这样做一个子类。
//A complex subclass of Parse.Object
var Monster = Parse.Object.extend("Monster", {
// Instance methods
hasSuperHumanStrength: function () {
return this.get("strength") > 18;
},
// Instance properties go in an initialize method
initialize: function (attrs, options) {
this.sound = "Rawr"
}
}, {
// Class methods
spawn: function(strength) {
var monster = new Monster();
monster.set("strength", strength);
return monster;
}
});
var monster = Monster.spawn(200);
alert(monster.get('strength')); // Displays 200.
alert(monster.sound); // Displays Rawr.
最终我试图将以下代码从Java翻译成JS。
/**
* @author XujieSong
*
*/
@ParseClassName("_User")
public class SHUser extends ParseUser {
/**
* SHUser is a subclass of ParseUser
* Class name _User
*/
/**
* Default constructor
*/
public SHUser() {
}
/**
* Create a SHUser object with known objectId
* This method only returns a SHUser without data
* @param userID the objectId of the SHUser
* @return user a reference to a SHUser
*/
public SHUser(String userId) {
this.setObjectId(userId);
}
/**
* Create a new SHUser with attributes
* @param userName
* @param password
* @param email
* @param displayName
* @param installation
* @param profileImage
* @return user a new user
*/
public SHUser(String userName, String password, String email, String displayName) {
this.setUsername(userName);
this.setPassword(password);
this.setEmail(email);
this.setDisplayName(displayName);
}
}
这就是我到目前为止所做的,
var SHUser = Parse.Object.extend("_User", {
/**
* Instance properties go in an initialize method
* @param {userId}
* @return {[type]}
*/
SHUser: function () {
},
/**
* Instance properties go in an initialize method
* @param {userId}
* @return {[type]}
*/
SHUser: function (userId) {
this.id = userId;
},
/**
* Instance properties go in an initialize method
* @param {userName}
* @param {password}
* @param {email}
* @param {displayName}
* @return {[type]}
*/
SHUser: function (userName, password, email, displayName) {
this.setUsername(userName);
this.setPassword(password);
this.setEmail(email);
this.setDisplayName(displayName);
}
}, {
// Class methods
});
之后
var user = new SHUser(userId);
window.alert(Shelf.seller.id);
我未定义。
所以这就是问题所在。是否有可能有一个默认的构造函数,然后是一些自定义的构造函数,就像它在Java中的方式一样?这样做是一种好习惯吗?谢谢。
答案 0 :(得分:3)
在Backbone.js中进一步挖掘之后,我找到了答案。 事实证明,不需要任何额外的编码。
var SHUser = Parse.Object.extend("_User", {
/**
* Instance properties go in an initialize method
*/
initialize: function (attr, options) {
},
}, {
// Class methods
});
这是一个backbone.js模型,因此在初始化时,只需传入参数即可。它可以工作。
var seller = new SHUser({"id": sellerId});
就是这样!
有关详细信息,请参阅backbonejs.org