1
votes

Obtention du nom de variable d'objet pour le nouvel objet

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);
}


7 commentaires

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.


3 Réponses :


3
votes

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"); 


6 commentaires

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 ?



1
votes

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;
}


1 commentaires

je ne veux pas passer le nom de la variable au constructeur en arguments.



0
votes

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);
}


0 commentaires