2014-12-26 3 views
0

Простите меня, если это глупый вопрос, я давно занимаюсь iphone и андроидом, а недавно мне нужно разработать для Интернета. Я использую parse.com для обработки запросов на сервер. Согласно их documentation, я могу сделать такой подкласс.Подкласс Parse.Object в Javascript

//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? Это хорошая практика? Спасибо.

ответ

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

+0

спасибо очень полезно! – rushelmet

Смежные вопросы