Как узнать, кто запрашивает свойство изнутри геттера?

Здравствуйте)

var user = {};
Object.defineProperty(user, 'name', {
	get: function () {
		// Нужен объект, который запросил свойство.
		// Или его конструктор. 
		// Или хоть что-нибудь неплохо бы узнать.
		return 'Jack';
	}
});

function A() { this.name = user.name; }
function B() { this.name = user.name; }
  • Вопрос задан
  • 524 просмотра
Пригласить эксперта
Ответы на вопрос 1
@dimentimor Автор вопроса
Нашел это, но доступ к объекту obj получить не удалось, хотя, наверное, это и правильно, т.к. обращается к свойству конструктор, а не сам объект.

var user = {};
Object.defineProperty(user, 'name', {
	get: function get() {
		// ссылки на вызывающие функции
		console.log(get.caller); // A и B
		console.log(get.caller.caller); // myFunction
		return 'Jack';
	}
});

function A() { this.name = user.name; }
function B() { this.name = user.name; }

// неймспейс
(function myFunction() {
	var obj = {
		a: new A(),
		b: new B()
	};
}());
Ответ написан
Ваш ответ на вопрос

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

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