Denis
Конструкторы более функциональнее классов
honey
я вот разбираюсь: есть просто обычные функции function func(){ return this } - вернет глобальный объект (в ноде global object, в браузере window). если пробовать посмотреть на this внутри объекта, например const obj = { name: 'Sveta', age: 24, func: function(){ return this } } и сделать obj.func() то получим { name: 'Sveta', age: 24, func: f } То есть, если в объекте делать поле, значением которого будет функция, возвращающая this, то получим тело объекта. и такого, как я понимаю, применение this относительно объектов (пока не говорим про bind, call и applay). Но просто в функциях ещё как-то можно получить контекст функции? Или это не надо? или в этом нет смысла
honey
если попробовать сделать у объекта по полю func значение в виде стрелочной функции, то она при вызове obj.func() отдаст андефайнд вроде т.к. пытается отдать контекст объекта, но его затирает стрелочная функция, так ?
honey
(надеюсь ни у кого крови из глаз не будет... ._.)
Denis
🏴☠️
Denis
я вот разбираюсь: есть просто обычные функции function func(){ return this } - вернет глобальный объект (в ноде global object, в браузере window). если пробовать посмотреть на this внутри объекта, например const obj = { name: 'Sveta', age: 24, func: function(){ return this } } и сделать obj.func() то получим { name: 'Sveta', age: 24, func: f } То есть, если в объекте делать поле, значением которого будет функция, возвращающая this, то получим тело объекта. и такого, как я понимаю, применение this относительно объектов (пока не говорим про bind, call и applay). Но просто в функциях ещё как-то можно получить контекст функции? Или это не надо? или в этом нет смысла
Можно юзать this в прототипе
honey
а почему она его пропускает?
honey
honey
френдзона
🏴☠️
Получается стрелочная функция у тебя в объекте, но потом ты вызываешь ее в глобальной области, в которой например нету this.userName (поле которое есть в объекте)
honey
honey
honey
так, стоп. Сейчас попробую вникнуть в то что вы пишите
honey
🌼
honey
honey
а почему тогда говорят что у стрелочных функций "нет своего контекста"? когда он есть (просто при вызове из глобальной области он..пропускается)
Denis
Hide
то есть стрелочная функция она вообще другая 😱
honey
ну this берет контекст той области {} в которой находится
honey
правильно ?
honey
в данном случае this находится ВНЕ объекта в котором мы его написали
honey
поэтому контекст должен взяться как window (из консоли в хроме).... почему андефайнд
Denis
Стрелки юзают когда не нужно чтобы this сменился внутри
Denis
Denis
Denis
А потом пиши вопрос
🏴☠️
🏴☠️
window.age = 124;
const obj = {
name: 'Sveta',
age: 24,
func: () => {
return this.age
}
}
console.log(
obj.func() // 124
)
honey
а.. так. там будет не андефайнд, все таки, а window, да
Denis
Denis
honey
honey
я перепутала, когда сказала что тут будет андефайнд
Denis
Denis
Код лучше скидывать текстом, чтобы легко было скопировать
honey
как в просто функции можно (и нужно ли) использовать this
Denis
honey
это просто интерес, я не знаю зачем, мне интересно где можно использовать this кроме как в объектах, вот в объектах я уже попробовала. А в просто функции как раз и спрашиваю - делают ли так
Denis
Denis
Просто он будет иметь разные значения
🏴☠️
🏴☠️
99% задач можно решить без использования this
🏴☠️
Если только ты целенаправленно не будешь писать свой код так. чтобы приходилось использовать this
Denis
🏴☠️
honey
хорошо, спасибо за объяснения! буду дальше пробовать и смотреть.
honey
вообще, я просто стараюсь понять как меняется контекст this в зависимости от того где этот this находится, вот.
honey
🏴☠️
Denis
🏴☠️
Можно написать целое приложение используя только стрелки
Denis
honey
а смотреть же...можно только в объекте, правильно? потому что если попробовать вернуть this из обычной функции (не объекта.), то возвращается именно window
Denis
Hide
🏴☠️
Я объяснил
В каких именно задачах тебе нужно this ? и синтаксис старый functions
🏴☠️
Почему в этой задач нельзя заюзать стрелку
Denis
🏴☠️
🏴☠️
Denis
🏴☠️
Denis
honey
блин( я пока не особо понимаю функции-конструкторы и только немного понимаю что из себя может представлять класс. Попробую на объекте тогда. Стрелочную функцию и просто функцию. Спасибо!
Hide
🏴☠️
🏴☠️
🏴☠️
Так же как рабоет var