Я изучаю шаблон, в котором вы можете сохранить глобальную ссылку на текущий экземпляр для простого использования в анонимных функциях, где ключевое слово this
находится вне контекста.Учтите это:
var instance;
var a = function(id) {
instance = this;
this.id = id;
};
a.prototype.get = function() {
return (function() {
return instance.id;
})();
};
var x = new a('x');
var y = new a('y');
console.log(x.get());
console.log(y.get());
Это, очевидно, не сработает, поскольку экземпляр определяется в конструкторе, каждый раз, когда вызывается .get()
, instance
будет ссылаться на последний построенный объект.Таким образом, он выдает «y» оба раза.
Однако я ищу способ получить экземпляр внутри метода-прототипа без использования ключевого слова this
, чтобы сделать код более читабельным.Синглтоны здесь не вариант, мне нужно наследование прототипа.