@marrrr

Как вывести имя объекта в самом объекте?

Добрый день! Подскажите, можно ли как-то вывести строкой имя объекта?
var calina = {
  write: function() {
    console.log(.....);
  }
}
calina.write();  // 'calina'
  • Вопрос задан
  • 341 просмотр
Пригласить эксперта
Ответы на вопрос 2
rockon404
@rockon404
Frontend Developer
Это не "имя объекта", а имя переменной которая ссылается на объект. Получить его стандартными средствами невозможно. К тому же на один и тот же объект может ссылаться множество переменных.

Создайте конструктор c полем name:
function Entity(name) {
  this.name = name;
}

Entity.prototype.write = function() {
  console.log(this.name);
}

var calina = new Entity('calina');
calina.write();
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно перебрать контекст в надежде найти себя:
var context = this;

var calina = {
  write: function() {
    for(var prop in context) {
      if(context[prop] !== this) continue;
      console.log("Found self:", prop);
      return prop;
    }
  }
}
calina.write();  // 'calina'


Если это в корне выполняется, в браузере, то контекст известен и можно не вводить переменную context а «искать себя» в объекте window:
так
var calina = {
  write: function() {
    for(var prop in window) {
      if(window[prop] !== this) continue;
      console.log("Found self:", prop);
      return prop;
    }
  }
}
calina.write();  // 'calina'


В контексте вполне может присутствовать несколько переменных, ссылающихся на этот один и тот же объект. var calina2 = calina; Предусмотрите этот случай и собирайте/возвращайте массив значений в таком случае.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы