область видимости неименованного экземпляра
Всем привет, вопрос знатокам.
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, время: 15:50. |