Какая разница между обьектом и классом заранее извиняюсь если задаю глупый вопрос?

|
I love Kittens 2022-07-02 15:16:14
buzzlightyear31 2022-07-02 15:06:27
ребят, всем привет! Помогите плз разобраться, я уже второй день сижу, делаю разные задачи чтобы вспомнить основы и сейчас задача с контекстом, но я правда не понимаю в чём тут ошибка

Ошибка: TypeError: Cannot read property ‘vendor’ of undefined

и пишет, что контекст не привязан к методу getInfo, изменения могу вносить только в этом файле
вызов методов происходит в другом файле, там всё точно норм

само задание звучит так: Поправьте классы так, чтобы ошибка TypeError: Cannot read property ‘vendor’ of undefined больше не отображалась. Вносите изменения только в файл task.js

Заранее благодарю за помощь!

может, getInfo: () =>

Vladislav 2022-07-02 15:17:36
I love Kittens 2022-07-02 15:16:14
может, getInfo: () =>

Функция в любом случае должна была контекст своего класса подцепить

I love Kittens 2022-07-02 15:20:45
Vladislav 2022-07-02 15:17:36
Функция в любом случае должна была контекст своего класса подцепить

bind, call, apply не согласны

yucupov 2022-07-02 15:21:58
buzzlightyear31 2022-07-02 15:06:27
ребят, всем привет! Помогите плз разобраться, я уже второй день сижу, делаю разные задачи чтобы вспомнить основы и сейчас задача с контекстом, но я правда не понимаю в чём тут ошибка

Ошибка: TypeError: Cannot read property ‘vendor’ of undefined

и пишет, что контекст не привязан к методу getInfo, изменения могу вносить только в этом файле
вызов методов происходит в другом файле, там всё точно норм

само задание звучит так: Поправьте классы так, чтобы ошибка TypeError: Cannot read property ‘vendor’ of undefined больше не отображалась. Вносите изменения только в файл task.js

Заранее благодарю за помощь!

перед конструктором переменные не объявлены

Vladislav 2022-07-02 15:22:01
I love Kittens 2022-07-02 15:20:45
bind, call, apply не согласны

Это то да
Просто тут соль в чем
По умолчанию,вроде как классы описаны нормально
Но как создаётся экземпляр, и как вызываются его методы-неизвестно

buzzlightyear31 2022-07-02 15:22:36
Vladislav 2022-07-02 15:22:01
Это то да
Просто тут соль в чем
По умолчанию,вроде как классы описаны нормально
Но как создаётся экземпляр, и как вызываются его методы-неизвестно

Сек

buzzlightyear31 2022-07-02 15:23:00
js_by_vladilen_chat-199922.jpg
вот другой файл, где всё вызывается
buzzlightyear31 2022-07-02 15:23:11
Тут ошибки нет
Vladislav 2022-07-02 15:23:17
yucupov 2022-07-02 15:21:58
перед конструктором переменные не объявлены

Объявление в явном виде необязательно,вроде как

I love Kittens 2022-07-02 15:23:47
buzzlightyear31 2022-07-02 15:23:00
вот другой файл, где всё вызывается

ага, вызывается не как метод

Vladislav 2022-07-02 15:23:58
buzzlightyear31 2022-07-02 15:23:00
вот другой файл, где всё вызывается

Аа
Ну круто получается
Вызывается не как метод класса

buzzlightyear31 2022-07-02 15:24:15
Vladislav 2022-07-02 15:23:58
Аа
Ну круто получается
Вызывается не как метод класса

Я понимаю, но ниче сделать не могу))

I love Kittens 2022-07-02 15:24:17
значит, стрелочные функции в помощь
buzzlightyear31 2022-07-02 15:24:35
I love Kittens 2022-07-02 15:24:17
значит, стрелочные функции в помощь

Разве контекст тогда ещё сильнее не потеряется?

Vladislav 2022-07-02 15:24:43
buzzlightyear31 2022-07-02 15:24:15
Я понимаю, но ниче сделать не могу))

Попробуй по дефолту туда this подбрасывать

I love Kittens 2022-07-02 15:24:55
buzzlightyear31 2022-07-02 15:24:35
Разве контекст тогда ещё сильнее не потеряется?

нет, они всегда привязаны к тому, где объявлены

buzzlightyear31 2022-07-02 15:25:17
Vladislav 2022-07-02 15:24:43
Попробуй по дефолту туда this подбрасывать

Туда это куда?

bariglion 2022-07-02 15:25:46
I love Kittens 2022-07-02 15:24:17
значит, стрелочные функции в помощь

Стрелочные функции не имеют контекст, но они умею его передавать из выше стоящей обычной функции, ему стрелочная не подойдёт

I love Kittens 2022-07-02 15:25:48
I love Kittens 2022-07-02 15:24:55
нет, они всегда привязаны к тому, где объявлены

и это единственное решение, как я вижу, кроме делать в конструкторе this.getInfo = this.getInfo.bind(this)

Vladislav 2022-07-02 15:26:14
buzzlightyear31 2022-07-02 15:25:17
Туда это куда?

getInfo(this=this) {}
Хотя может не прокатить

I love Kittens 2022-07-02 15:26:20
bariglion 2022-07-02 15:25:46
Стрелочные функции не имеют контекст, но они умею его передавать из выше стоящей обычной функции, ему стрелочная не подойдёт

имеют контекст

bariglion 2022-07-02 15:26:35
I love Kittens 2022-07-02 15:26:20
имеют контекст

Не имеют

bariglion 2022-07-02 15:26:51
Могу пример продемонстрировать
I love Kittens 2022-07-02 15:27:56
bariglion 2022-07-02 15:26:35
Не имеют

как самостоятельный для new — не имеют, сам this контекст (который является окружением, где объявлены) — имеют

Vladislav 2022-07-02 15:28:23
I love Kittens 2022-07-02 15:26:20
имеют контекст

Функция стрелка берет контекст оттуда,где вызвана,не создавая своего

I love Kittens 2022-07-02 15:29:32
Vladislav 2022-07-02 15:28:23
Функция стрелка берет контекст оттуда,где вызвана,не создавая своего

точно не где вызвана

bariglion 2022-07-02 15:29:51
I love Kittens 2022-07-02 15:27:56
как самостоятельный для new — не имеют, сам this контекст (который является окружением, где объявлены) — имеют

по этой логике, то это должно сработать
let person = {
job: ‘test’,
lookJob:() => {
console.log(this.job)
}
}
но не сработает

Vladislav 2022-07-02 15:31:57
I love Kittens 2022-07-02 15:29:32
точно не где вызвана

Извиняюсь,зря быканул

I love Kittens 2022-07-02 15:33:34
bariglion 2022-07-02 15:29:51
по этой логике, то это должно сработать
let person = {
job: ‘test’,
lookJob:() => {
console.log(this.job)
}
}
но не сработает

да, но при объявлении в классе как метод она возьмет контекст класса

I love Kittens 2022-07-02 15:34:16
и даже при деструктурировании она будет работать в контексте класса
adayke 2022-07-02 15:34:55
Привет! Какая разница между обьектом и классом заранее извиняюсь если задаю глупый вопрос? Начал читать что такое ооп и вот вопрос?
Vladislav 2022-07-02 15:35:22
adayke 2022-07-02 15:34:55
Привет! Какая разница между обьектом и классом заранее извиняюсь если задаю глупый вопрос? Начал читать что такое ооп и вот вопрос?

Объект — экземпляр класса

I love Kittens 2022-07-02 15:35:34
adayke 2022-07-02 15:34:55
Привет! Какая разница между обьектом и классом заранее извиняюсь если задаю глупый вопрос? Начал читать что такое ооп и вот вопрос?

объект — экземпляр класса
класс — описание создаваемых объектов

bariglion 2022-07-02 15:35:35
I love Kittens 2022-07-02 15:33:34
да, но при объявлении в классе как метод она возьмет контекст класса

а, в контексте классов она ещё умеет у них ещё забирать контекст, как-то давно пробывал не сработало у меня, но скорее всего я корявил. С классами давно не работал

misbiheyv 2022-07-02 15:36:18
buzzlightyear31 2022-07-02 15:23:00
вот другой файл, где всё вызывается

js_by_vladilen_chat-199950.jpg

misbiheyv 2022-07-02 15:36:29
вот такое сделай в классе
buzzlightyear31 2022-07-02 15:37:21
misbiheyv 2022-07-02 15:36:29
вот такое сделай в классе

Зачем?)

buzzlightyear31 2022-07-02 15:37:32
Просто попробовать?
bariglion 2022-07-02 15:37:37
adayke 2022-07-02 15:34:55
Привет! Какая разница между обьектом и классом заранее извиняюсь если задаю глупый вопрос? Начал читать что такое ооп и вот вопрос?

если говорить человеческим языком, то класс — это что-то типа алиаса (инструкции), а объект — это образно говоря какой-то раздел инструкции

misbiheyv 2022-07-02 15:38:07
buzzlightyear31 2022-07-02 15:37:21
Зачем?)

js_by_vladilen_chat-199955.jpg

I love Kittens 2022-07-02 15:38:10
buzzlightyear31 2022-07-02 15:37:32
Просто попробовать?

ну это единственное решение, которое я вижу

misbiheyv 2022-07-02 15:38:21
ну только со своими переменными, а не a,b,c,d
buzzlightyear31 2022-07-02 15:39:58
Сейчас попробую
adayke 2022-07-02 15:40:13
bariglion 2022-07-02 15:37:37
если говорить человеческим языком, то класс — это что-то типа алиаса (инструкции), а объект — это образно говоря какой-то раздел инструкции

спс большое

I love Kittens 2022-07-02 15:42:15
bariglion 2022-07-02 15:29:51
по этой логике, то это должно сработать
let person = {
job: ‘test’,
lookJob:() => {
console.log(this.job)
}
}
но не сработает

а вообще, ради справедливости, я часто забываю, что оно так не работает

adayke 2022-07-02 15:48:22
Получается Класс это шаблон(кусок кода) по которому можем создать обьект.
adayke 2022-07-02 15:48:48
А вот какая разница между методом и конструктором в Классе?
misbiheyv 2022-07-02 15:50:52
bariglion 2022-07-02 15:29:51
по этой логике, то это должно сработать
let person = {
job: ‘test’,
lookJob:() => {
console.log(this.job)
}
}
но не сработает

тут у нее просто контекст глобальный

misbiheyv 2022-07-02 15:51:02
так то она имеет контекст
misbiheyv 2022-07-02 15:51:59
у нее контект как у родительской функции, если я не путаю
|