Comment surcharge de constructeur d'un Objet en JS (Javascript)?
Puis-je faire quelque chose comme?:
function User(form) {
this._username = form.username.value;
this._password = form.password.value;
this._surname = form.surname.value;
this._lastname = form.lastname.value;
this._birthdate = form.b_day.value+"-"+form.b_month.value+"-"+form.b_year.value;
this._avatar = form.avatar;
this._messages = new Array();
this._messagesCount=0;
}
function User(userName,password,surname,lastName,birthdate) {
this._username = userName;
this._password = password;
this._surname = surname;
this._lastname = lastName;
this._birthdate = birthdate;
this._avatar = form.avatar;
this._messages = new Array();
this._messagesCount=0;
}
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas le faire, car JavaScript est un langage fortement typé, il ne va pas voir une différence entre la forme et le nom d'utilisateur. Vous pouvez créer de multiples fonctions comme la
createUserFromForm(form)
etcreateUserFromUserInfo(userName, password,...)
ou vous pouvez essayer d'utiliser un singulier constructeur sans arguments spécifiés, puis utiliser arguments collection de vérifier l'entrée et de décider quoi faire.J'aime Ilya Volodins de réponse et j'ai pensé que je voudrais ajouter ceci comme un exemple:
Il y a probablement plus agréable des façons de le faire, mais juste un exemple.
Non vous ne pouvez pas, JavaScript ne prend pas en charge la surcharge de toute nature.
Ce que vous pouvez faire est de passer d'un objet qui a déjà été rempli avec les valeurs de votre constructeur et ensuite saisir les valeurs de l'objet, mais ce qui les doublons code.
Ou vous pouvez créer un constructeur par défaut et ajouter des méthodes telles que
initFromUser
ousetFromForm
qui ensuite prendre les paramètres de configuration et les objets de valeurs,new User().initFormForm(form)
a l'air assez propre pour moi.Surcharge du constructeur ou de toute autre fonction Javascript en comptant le nombre d'arguments:
Vous pouvez également définir des arguments par défaut par la détection de la façon dont de nombreux arguments sont manquants.
Vous pouvez facilement simuler des méthodes surchargées et les constructeurs à l'aide d'une combinaison de chaînes JSON et la typeof de commande. Voir l'exemple ci - dessous-vous du val de l'attribut est façonné à partir du type de données: