область видимости неименованного экземпляра
Всем привет, вопрос знатокам.
function Rabbit() { this.p = 1; } new Rabbit(); скажите где в таком случае находится экземпляр объекта? в глобальной области? можно ли к нему получить доступ? а если он в функции? например: function () { new Rabbit(); } в этом случае где js хранит экземпляр, в скопе? Как опять же получить доступ? В смысле, обязательно ли именовать созданный экземпляр, есть ли практика создания неименованных экземпляров? |
Цитата:
function Timer() { this.showTime = function () { setInterval(function () { console.log(1); },1000); }(); } new Timer(); Он же тикает, это что, неконтролируемые данные? |
Rise,
Не, тут что то есть) асинхронный код живет в объекте и я могу обращаться к приватным свойствам через замыкание Например: function Timer() { var a = 1; this.showTime = function () { setInterval(function () { console.log(a++) },1000); }(); } new Timer(); Объекта нет, а скоуп его есть, является ли это неправильным кодом вызывающем утечку? |
Rise,
Хорошо, есть ли правила запрещающие нам создавать экземпляр таким образом (без ссылки) или мы вправе так делать, в случае необходимости? |
kuzroman, в данном примере нет необходимости создавать экземпляр, тоже самое:
function Timer() { var a = 1; setInterval(function () { console.log(a++) },1000); } Timer(); или function Timer(a) { setInterval(function () { console.log(a++) },1000); } Timer(1); или (function (a) { setInterval(function () { console.log(a++) },1000); }(1)); |
Rise,
Да я согласен, это я так, частный случай, привел. У меня слушатель сидит в экземпляре и наблюдает, тоже, просто, асинхронная вещь, вот и пример привел. |
Часовой пояс GMT +3, время: 00:25. |