Как найти имя объекта созданного

So what I need to do, is get the name of a class when its created.

class Car {
  constructor(color) {
    this.color = color;
  }
}

newcar = new Car('Red');

objectNames = []

I need to get the name of the object I created, (newcar), into the array, (objectNames). I’ve tried to search it but I’m not even exactly sure what to search for. Thanks for the help!

asked Jun 20, 2020 at 23:46

help's user avatar

2

do you mean something like this

    objectNames = []
class Car {
  constructor(carmaker,color) {
    this.color = color;
    this.carmaker=carmaker
  }
  saveob(){
    objectNames.push({[this.carmaker]:this.color})
  }
}
newcar = new Car('toyota','Red').saveob()
console.log(objectNames)
console.log(Object.keys(objectNames[0])[0])
console.log(objectNames[0].toyota)

answered Jun 20, 2020 at 23:59

Sven.hig's user avatar

Sven.higSven.hig

4,4502 gold badges7 silver badges18 bronze badges

3

Using a getter inside the class

class Car {
  constructor(color) {
    this._color = color;
  }
  get color(){
    return this._color;
  }
}

var newcar = new Car('Red');

var objectNames = [];
objectNames.push(newcar.color);

console.log(objectNames);

answered Jun 21, 2020 at 0:00

sonEtLumiere's user avatar

sonEtLumieresonEtLumiere

4,4193 gold badges7 silver badges32 bronze badges

Доброго времени суток! Я написал простой код:

 package SelfBook_made.Other.Etudy;
 import java.lang.Math;  
 public class Wheel {
 double r;

Wheel(double r){
    this.r = r;  //инициализация колеса из конструктора
}
public double length1(){
    return 2*(Math.PI)*r;   //возврат длины окружности 
}

public double square_wheel(){
   return Math.PI*r*r;        //возврат площади окружности
}

void c(){
    System.out.println();
    System.out.println("Длина колеса = " +length1());
    System.out.println("Площадь колеса = " +square_wheel() );
 }

public static void main(String[] args) {
    Wheel w1 = new Wheel(5);  //Первое колесо
    Wheel w2 = new Wheel (3); // Второе колесо
    w1.c(); 
    w2.c();
  }
 }

На выходе программа даёт площадь и длину окружности колеса.
Как написать метод, чтобы моя программа возвращала имя колеса?
Чтобы на выходе было:

  • Колесо w1:
  • Длина колеса = …
  • Площадь колеса = …

задан 14 сен 2015 в 14:02

Andrew Kachalin's user avatar

Andrew KachalinAndrew Kachalin

2,8613 золотых знака24 серебряных знака47 бронзовых знаков

2

По идее, правильным решением будет в классе Wheel создать переменную string name и инициализировать ее через конструктор.
Т.к. из самого объекта Вы не можете узнать (без костылей), какая переменная на него ссылается.

package SelfBook_made.Other.Etudy;
import java.lang.Math;  
public class Wheel {
    double r;
    String name;

    Wheel(String name, double r){
        this.name = name;
        this.r = r;  //инициализация колеса из конструктора
    }

    public double length1(){
        return 2*(Math.PI)*r;   //возврат длины окружности 
    }

    public double square_wheel(){
        return Math.PI*r*r;        //возврат площади окружности
    }

    void c(){
        System.out.println("Колесо " + name + ":");
        System.out.println("Длина колеса = " +length1());
        System.out.println("Площадь колеса = " +square_wheel() );
    }

    public static void main(String[] args) {
        Wheel w1 = new Wheel("Колесо1", 5);  //Первое колесо
        Wheel w2 = new Wheel("Колесо2", 3); // Второе колесо
        w1.c(); 
        w2.c();
    }
}

ответ дан 14 сен 2015 в 14:07

Aries's user avatar

4

Имена локальных переменных не существуют. Надо передавать строку в метод и выводить её. Ну либо дабавить колесу свойство с именем и выводить его.

void c(String name){
    System.out.println("Колесо " + name + ":");
    System.out.println("Длина колеса = " + length1());
    System.out.println("Площадь колеса = " + square_wheel());
}

w1.c("w1");
w2.c("w2");

ответ дан 14 сен 2015 в 14:07

Qwertiy's user avatar

QwertiyQwertiy

121k24 золотых знака121 серебряный знак291 бронзовый знак

1

Ну, имена переменных заданных через var получить нельзя. Мне кажется, в вашем случае единственно допустимый вариант, это использовать ваши объекты (например, date) внутри других объектов. Тогда ключи можно собрать используя Object.keys ну или просто for (key in obj)

UPD: я скорее всего неправильно понял что вам нужно, но все же попробовал:

obj = {
	date: {
		"man1" : "1974, 10, 29"
	}
}

result_obj = {};

Object.keys(obj).forEach(function(key) {
    result_obj['_' + key] = obj[key];
});

console.log(result_obj);

А для чего вам нужно передавать объект с измененным именем? В большинстве случаев когда мне надо было дотянуться левой ногой до правого уха, в итоге выяснялось, что задача решалась много проще xD

Пушехвост

0 / 0 / 0

Регистрация: 15.09.2009

Сообщений: 234

1

Как узнать имя экземпляра объекта?

16.09.2010, 18:58. Показов 16287. Ответов 10

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Как изнутри экземпляра объекта узнать имя этого экземпляра, например:

Javascript
1
2
3
4
5
6
7
8
9
10
11
function someObject ()
  {
  this.getName ()
    {
    //Этот метод должен вывести имя экземпляра этого объекта
    }
  }
 
var abc = new someObject ();
//Должно вывести имя этого экземпляра - abc
alert (abc.getName ());

Заранее спасибо!



0



0 / 0 / 1

Регистрация: 21.06.2010

Сообщений: 201

16.09.2010, 20:02

2

обычно применяется конструкция типа if (obj.constructor==objClass). Не припомню нужной функции, но при необходимости можно пропарсить obj.constructor.toString()



0



Пушехвост

0 / 0 / 0

Регистрация: 15.09.2009

Сообщений: 234

18.09.2010, 22:52

 [ТС]

3

Нет, obj.constructor.toString() возвращает код конструктора этого объекта,
а нужно узнать имя данного конкретного экземпляра.
Например:

Javascript
1
2
3
4
5
6
var abc = new someObject ();
alert (abc.getName ());   //Должна вывести abc
var xyz = new someObject ();
alert (xyz.getName ()); //Должна вывести xyz
var otherObjName = new someObject ();
alert (otherObjName.getName ()); //Должна вывести otherObjName



0



0 / 0 / 1

Регистрация: 21.06.2010

Сообщений: 201

19.09.2010, 02:28

4

Сорри, невнимателен. Мне приходит в голову только такой вариант. Понятно, работает только в опере.

Код

for (var i in window) if (window[i]==obj) alert(i);



0



0 / 0 / 0

Регистрация: 29.07.2008

Сообщений: 90

23.09.2010, 14:04

5

tochno ta je problema bila…
var a = new Obj(‘a’);
alert(a.name);
— tak vot resil, ne nashol drugovo vihoda…



0



0 / 0 / 1

Регистрация: 21.06.2010

Сообщений: 201

23.09.2010, 14:58

6

sergyu, это будет работать, только если Obj — твой тип; и перестанет правильно работать после var b = a; alert(b.name);



0



Shah

03.10.2010, 19:00

7

Любой объект представляется атрибутом NAME/ Что мешает сделать так?
Obj.name

Пушехвост

0 / 0 / 0

Регистрация: 15.09.2009

Сообщений: 234

06.10.2010, 19:52

 [ТС]

8

obj.name выдает, почему-то, undefined :-(
Посмотрите, может где ошибка?

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<HTML>
  <HEAD>
    <TITLE>
      Как узнать имя объекта?
    </TITLE>
    <SCRIPT>
      //Эта функция - конструктор объекта someObject
      function someObject ()
        {
        //Этот метод должен венуть имя экземпляра этого объекта
        this.getThisObjectName = function ()
          {
          return (this.name);
          }
        }
      //Создаем экземпляр класса someObject с именем a
      var a = new someObject ();
      //ПЫТАЕМСЯ УЗНАТЬ ИМЯ НАПРЯМУЮ, НО ПОЛУЧАЕМ undefined !!!!
      alert (a.name)
      //ПЫТАЕМСЯ УЗНАТЬ ЕГО ИМЯ ЧЕРЕЗ МЕТОД, НО ОПЯТЬ ПОЛУЧАЕМ undefined :-(
      alert (a.getThisObjectName ());
    </SCRIPT>
  </HEAD>
</HTML>



0



sl_play

4 / 4 / 3

Регистрация: 25.05.2009

Сообщений: 2,576

06.10.2010, 22:49

9

создай свойство name, тогда ты сможешь к нему обратиться.

Javascript
1
2
3
4
5
6
function myObj(){
this.name='myObj';
}
 
var obj=new myObj;
alert(obj.name);



0



0 / 0 / 0

Регистрация: 15.09.2009

Сообщений: 234

06.10.2010, 23:31

 [ТС]

10

Таким образом можно узнать имя конструктора объекта,
а надо имя ЭКЗЕМПЛЯРА объекта (не myObj, а obj).



0



3944 / 2858 / 665

Регистрация: 08.06.2007

Сообщений: 9,668

Записей в блоге: 4

07.10.2010, 01:43

11

По мне так у экземпляра объекта нет имени. До сих пор мы говорили об имени ссылки на объект. Но один и тот же экземпляр может иметь несколько ссылок либо не иметь ни одной.



0



Мне нужно получить не содержимое, а имя объекта.
Ситуация такая: делаю игру с инвентарем. Сначала создаю все передметы в виде объектов и добавляю их в объект «предметы». Далее создаю массив «инвентарь», куда потом добавляются найденные предметы. Чтобы сохранить игру, помещаю все нужные переменные, объекты и массивы в один объект, преобразую его в JSON и записываю в файл. При загрузке игры, сохраненный JSON преобразую обратно в объект.
Но проблема в том, что у предметов в свойствах присутствуют функции для использования их в игре. А функции не сохраняются в JSON. Поэтому при загрузке игры, предметы невозможно использовать, так как они загружаются без функций.

Можно решить эту проблему, просто обновив инвентарь после загрузки игры.

for(var i=1, i<инвентарь.length; i++){
if (инвентарь[i] !== null){
инвентарь[i] = предметы[инвентарь[i]];
}
}

Но проблема в том, что «инвентарь[i]» (содержимое: инвентарь[нож]) является объектом, поэтому такая запись добавляет в инвентарь null. Если как-то преобразовать «инвентарь[i]» в строку, то все будет работать как нужно.

Понравилась статья? Поделить с друзьями:
  • Что такое коэффициент в химии как найти
  • Как найти работника через службу занятости
  • Как найти пропавшие фото в телефоне редми
  • Как найти относительную влажность воздуха в помещении
  • Фотошоп кисть крестиком как исправить