Я изучаю шаблон, в котором вы можете сохранить глобальную ссылку на текущий экземпляр для простого использования в анонимных функциях, где ключевое слово this
вне контекста. Рассмотрим это:Глобальный экземпляр в прототипе javascript
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
, чтобы сделать код более читаемым. Синглтоны здесь не вариант, мне нужно прототипное наследование.
да, точно. Я ищу способ избежать сохранения локальных экземпляров для каждого метода прототипа при использовании анонимных функций. – David
Я предполагаю, что это «нет», но спасибо за предоставление шаблонов для приведения контекста в анонимные функции. – David