Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: Общие вопросы > this и литеральная форма |
Автор: PsiMagistr 23.3.2018, 12:30 | ||
Почему? |
Автор: ksnk 23.3.2018, 12:52 |
alert - очень странная функция, со своими многочисленными тараканами и фенечками. В IE оно блокирует выполнение скрипта до закрытия окна, в Хроме - не блокирует, но тоже ведет себя не всегда ожидаемо. Лучше пользоваться для трассировки console.log console.log('Литеральная форма ', this.property) |
Автор: PsiMagistr 23.3.2018, 13:09 | ||||
Кстати в декларативном классе все нормально. Всегда выводит object Спасибо Вам. console.log() не повлиял никак. Если использовать декларируемый класс то все хорошо, в любом случае.
|
Автор: PsiMagistr 23.3.2018, 13:24 | ||
Не сохраняет свойство свою ссылку на this Даже если просто так сделать:
|
Автор: PsiMagistr 23.3.2018, 14:12 | ||
Самый простой пример. |
Автор: ksnk 23.3.2018, 14:36 | ||
вообще-то this порождается конструкцией new. Не было new - нет и соответсвующей объекту области памяти, на который может указывать this. Так что все так и есть. Ну и так как в JS свято место редко бывает пусто - this в таком случае указывает на системный объект, как привило, - window Добавлено через 4 минуты и 49 секунд В случае
|
Автор: PsiMagistr 23.3.2018, 14:50 | ||||||
Спасибо. Не знал. А где можно именно про этот нюанс прочитать? Получается, что в литералах и нет никакого this? хотя например
|
Автор: ksnk 23.3.2018, 15:55 |
В случае конструирования объекта с помощью фигурных скобок new таки есть, но он появится только после полной сборки всего объекта. По этому использовать this явно при определении свойств в этом месте нельзя, this в этом месте еще не тот. А вот при вызове метода объекта он уже вполне себе this... |
Автор: PsiMagistr 23.3.2018, 16:07 | ||
То есть свойствам литорального объекта нельзя присвоить значение его this? Я верно понял? |
Автор: ksnk 23.3.2018, 16:51 | ||
вот так - this будет не тот, так как выделение памяти и инициализация переменной this произойдет после закрывающей фигурной скобки А в остальном "литеральный" объект ничем не отличается от объекта, который делается через конструктор |
Автор: PsiMagistr 23.3.2018, 17:03 | ||||
Спасибо большое. А где можно по это подробно прочитать. Раньше я думал, что литеральный ничем не отличается |