如果这是一个愚蠢的问题,请原谅我,我已经从事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中的方式?这样做是一种好习惯吗?谢谢。

最佳答案

在进一步挖掘Backbone.js之后,我找到了答案。
原来,不需要任何其他编码。

var SHUser = Parse.Object.extend("_User", {
  /**
   * Instance properties go in an initialize method
   */
  initialize: function (attr, options) {

  },
}, {
  // Class methods
});


这是一个bone.js模型,因此在初始化时,只需传入参数即可。

var seller = new SHUser({"id": sellerId});


就是这样!

有关更多信息,请参阅backbonejs.org

10-05 19:19
查看更多