Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.10.2015, 20:16
Аватар для kuzroman
Кандидат Javascript-наук
Отправить личное сообщение для kuzroman Посмотреть профиль Найти все сообщения от kuzroman
 
Регистрация: 26.11.2010
Сообщений: 124

область видимости неименованного экземпляра
Всем привет, вопрос знатокам.

function Rabbit() {
  this.p = 1;
}
new Rabbit();

скажите где в таком случае находится экземпляр объекта?
в глобальной области? можно ли к нему получить доступ?

а если он в функции? например:
function () { new Rabbit(); }

в этом случае где js хранит экземпляр, в скопе? Как опять же получить доступ?
В смысле, обязательно ли именовать созданный экземпляр, есть ли практика создания неименованных экземпляров?

Последний раз редактировалось kuzroman, 29.10.2015 в 20:21.
Ответить с цитированием
  #2 (permalink)  
Старый 29.10.2015, 21:43
Аватар для kuzroman
Кандидат Javascript-наук
Отправить личное сообщение для kuzroman Посмотреть профиль Найти все сообщения от kuzroman
 
Регистрация: 26.11.2010
Сообщений: 124

Сообщение от Rise Посмотреть сообщение
kuzroman, нигде не сохраняется.
Ну а если вот так сделать?
function Timer() {
    this.showTime = function () {
        setInterval(function () { console.log(1); },1000);
    }();
}

new Timer();

Он же тикает, это что, неконтролируемые данные?
Ответить с цитированием
  #3 (permalink)  
Старый 29.10.2015, 22:34
Аватар для kuzroman
Кандидат Javascript-наук
Отправить личное сообщение для kuzroman Посмотреть профиль Найти все сообщения от kuzroman
 
Регистрация: 26.11.2010
Сообщений: 124

Rise,
Не, тут что то есть)
асинхронный код живет в объекте и я могу обращаться к приватным свойствам через замыкание
Например:
function Timer() {
    var a = 1;
    this.showTime = function () {
        setInterval(function () { console.log(a++) },1000);
    }();
}
new Timer();

Объекта нет, а скоуп его есть, является ли это неправильным кодом вызывающем утечку?

Последний раз редактировалось kuzroman, 29.10.2015 в 22:43.
Ответить с цитированием
  #4 (permalink)  
Старый 29.10.2015, 23:05
Аватар для kuzroman
Кандидат Javascript-наук
Отправить личное сообщение для kuzroman Посмотреть профиль Найти все сообщения от kuzroman
 
Регистрация: 26.11.2010
Сообщений: 124

Rise,
Хорошо, есть ли правила запрещающие нам создавать экземпляр таким образом (без ссылки) или мы вправе так делать, в случае необходимости?
Ответить с цитированием
  #5 (permalink)  
Старый 29.10.2015, 23:19
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 458

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, 29.10.2015 в 23:23.
Ответить с цитированием
  #6 (permalink)  
Старый 29.10.2015, 23:43
Аватар для kuzroman
Кандидат Javascript-наук
Отправить личное сообщение для kuzroman Посмотреть профиль Найти все сообщения от kuzroman
 
Регистрация: 26.11.2010
Сообщений: 124

Rise,
Да я согласен, это я так, частный случай, привел.
У меня слушатель сидит в экземпляре и наблюдает, тоже, просто, асинхронная вещь, вот и пример привел.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Область видимости переменных (this) Артем163 Общие вопросы Javascript 4 21.03.2014 15:32
Помогите пож с JSON, передача id ссылки. wisma jQuery 22 10.02.2014 15:36
Область видимости переменной ацкий Общие вопросы Javascript 3 27.08.2011 14:09
область видимости Ultimatum Общие вопросы Javascript 2 19.06.2011 10:47
можно ли включить функцию в глобальную область видимости из файла maxval Элементы интерфейса 13 04.10.2009 07:11