J'ai un constructeur d'objet tel que:
var name1 = new myObjConstr(); //print in console log "name1" var nameff = new myObjConstr(); //print in console log "nameff"
Je veux ce résultat:
function myObjConstr () { console.log(object_name); }
3 Réponses :
Vous devrez passer le nom de l'objet au constructeur:
function myObjConstr (obj_name) { this.object_name = obj_name; console.log(this.object_name); } var name1 = new myObjConstr("name1"); var nameff = new myObjConstr("nameff");
merci pour votre réponse, je ne veux pas envoyer le nom de var dans les arguments de fonction. Je n'aime pas répéter les codes :)
Que voulez-vous dire? C'est la norme pour créer des objets. Il n'est pas normal de référencer un nom de variable dans le code de la manière que vous essayez. Le nom de la variable n'est qu'une référence / un pointeur vers les données réelles. Le nom doit être stocké dans l'objet
@MostafaMaher Les noms de variables n'ont pas d'importance, attendez-vous à ce qu'ils soient minifiés ou autre chose. Tous les objets ne sont même pas du tout affectés à une variable. Si vous avez besoin de noms, utilisez des chaînes.
@Bergi oui, si l'objet n'est pas affecté à la variable .. renvoie "" simplement :)
function myObjConstr (nom_obj) {console.log (this.constructor); } pourquoi Pourquoi ne pas en être ainsi this.assignedVariableName par exemple? !!
@MostafaMaher Donc, si cela n'a pas vraiment d'importance et que vous êtes d'accord avec ""
aussi, pourquoi vous souciez-vous du nom du tout? Quel est votre problème réel ?
vous pouvez créer un constructeur de fonction myObjConstr (), puis après vous pouvez créer un nouveau myObjConstr ().
1) constructeur de fonction
console.log(name1.objName)
2) créer un objet de type myObjConstr
var name1 = new myObjConstr("name1"); var name2 = new myObjConstr("name2");
3) si vous souhaitez imprimer la valeur,
function myObjConstr (objName) { this.objName = objName; }
je ne veux pas passer le nom de la variable au constructeur en arguments.
Vous ne pouvez pas passer le nom de la variable au constructeur. Au lieu de cela, vous pouvez convertir un tableau
de noms de variables en tableau de objets
let names = [ 'name1', 'nameff' ] let objects = names.map(name => myObjConstr(name)); function myObjConstr(name){ this.name = name; console.log(this.name); }
Il n'y a pas d'association entre un objet et sa variable d'affectation. IOW: Pas possible.
définissez simplement un champ, à savoir "nom", dans votre objet et définissez la valeur initiale lorsque vous créez une instance de cet objet
Veuillez expliquer pourquoi vous devez le faire. Quel problème pourra résoudre ce problème? Comme indiqué ci-dessous, il est possible d'imiter cela avec des noms d'objets et autres, mais il y a généralement de meilleures solutions au problème que cela résoudrait.
Les objets n'ont pas intrinsèquement de «noms» eux-mêmes. Plutôt, les variables «nom» des objets: x = y = {}. Ce nouvel objet, accessible via les «noms» x et y, n’a aucune connaissance des expressions pour lesquelles il a été utilisé ou des «noms» qui l’évaluent.
@ user2864740 Nice, var x = y = new myObjConstr (); mais logiquement, il n'y a pas de problème s'il y a quelque chose comme ça en javascript qui renvoie le nom de variable assigné dans le constructeur d'objet.
var x = y = new myObjConstr (); résultat dans console.log: "x" puis "y" normalement .. Pourquoi ce n'est pas disponible en javascript?
(this.constructor) est défini dans le constructeur d'objet javascript, je veux également attribuer un nom de variable ou retourner "" s'il n'est pas attribué à la variable simplement.