169 похожих чатов

Доброго дня Вопрос по js Есть объект вида: markdown const FOO =

{
key1: 'test',
key2: {
  'test2',
  'test3',
  get bar() {
    return `${this.key1}$. {this.key2.test2}`
}
}
}

Вывод FOO.key2.bar выводит ошибку undefined

В чем может быть проблема?
Тут проблема в области видимости или другая причина?

37 ответов

43 просмотра

А переменные test2 и test3 определены? Здесь используется короткая запись, где свойство test2 определяется значением переменной test2

Фәнил-Зарип Автор вопроса
Grigorii K. Shartsev
А переменные test2 и test3 определены? Здесь испо...

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

Фәнил Зарип
Да, скорректировал, похоже уже понял. Дело всё та...

А, не увидел что там key, а не test. Да, только это не про область видимости, а про определение контекста. this, если явно не привязан - это объект у которого вызывается метод

Фәнил-Зарип Автор вопроса

А как-то можно получить доступ к свойству родительского объекта?)

Фәнил Зарип
А как-то можно получить доступ к свойству родитель...

Нет "родительского" объекта. Тут просто свойство, которое ссылается на другой объект. Но на него может ссылаться куча свойств в самых разных объектах одновременно. Можно просто обращаться не к this, а у FOO, либо явно биндить контекст

Фәнил Зарип
А как-то можно получить доступ к свойству родитель...

прототип можно у всех дочерних указывать на корневой

что такое get bar()?

Grigorii K. Shartsev
Геттер

действительно великий могучий javascript...

Ruslan
действительно великий могучий javascript...

Их добавили ещё в ES5 и на них основана реактивность в Vue 2! :D

Grigorii K. Shartsev
Их добавили ещё в ES5 и на них основана реактивнос...

В прикладном программировани такого не часто встречал В других языках есть?

Ruslan
В прикладном программировани такого не часто встре...

Начиная с es6 просто в таких случаях чаще используют классы, там те же геттеры и сеттеры

Ruslan
действительно великий могучий javascript...

так вью 2 на них чисто и работал .-.

Vyacheslav Гайсин
есть, тот же C# взять

И что там? Работаешь извне напрямую с переменной объекта, а под капотом вызываются определенные тобой методы?

Ruslan
И что там? Работаешь извне напрямую с переменной о...

Ну геттеры/сеттеры в классах там также есть. Вроде во всех ООП языках есть популярных

Denis Chernov
во многих, тема стара как мир

Мы говорим о разных вещах В нормальном мире объект - это набор свойств/аттрибутов и методов В JS тут идет смешение свойства и методов

Ruslan
Мы говорим о разных вещах В нормальном мире объект...

Чем отличается "набор свойств и методов" от "смешение свойств и методов"?

Grigorii K. Shartsev
Ну геттеры/сеттеры в классах там также есть. Вроде...

Геттеры и сеттеры в ООП языках это обычные методы Функции И обращение к ним идет как к методам

Grigorii K. Shartsev
Чем отличается "набор свойств и методов" от "смеше...

То что ты вроде работаешь с примитивным свойством объекта, а на самом деле происходит непонятно что Вроде тут недавно переопределения функций Реактом ругиали

Ruslan
Геттеры и сеттеры в ООП языках это обычные методы ...

public class Person { public string? FirstName { get { return _firstName; } set { _firstName = value; } } private string? _firstName; // Omitted for brevity. } hero.FirstName = "";

Grigorii K. Shartsev
public class Person { public string? FirstName...

https://learn.microsoft.com/en-us/dotnet/csharp/properties

Grigorii K. Shartsev
https://learn.microsoft.com/en-us/dotnet/csharp/pr...

Аналогичное есть в пайтоне, котлине class Rectangle(val width: Int, val height: Int) { val area: Int get() = this.width * this.height } rectangleInstance.area //

Grigorii K. Shartsev
Аналогичное есть в пайтоне, котлине class Rectangl...

В C# и Котлин - действительно В Питоне - нет, это обычные функции

Ruslan
В C# и Котлин - действительно В Питоне - нет, это ...

class Foo: def __init__(self, number): self._number = number @property def str_number(self): return str(self._number) @str_number.setter def str_number(self, value): self._number = int(value)

Grigorii K. Shartsev
class Foo: def __init__(self, number): self....

Ужас... Чем больше узнаю языки программирования, тем больше люблю Java

Если я пишу foo.bar = 3, то я ожидаю что foo.bar = 3 Если у него стоит сеттер и другое поведение, то это переопределение и неправильно Потому что foo.bar = 3; console.log(foo.bar); // 5 это чушь

Ruslan
Если я пишу foo.bar = 3, то я ожидаю что foo.bar =...

const a = ref() const b = {} a.value = b console.log(a.value === b) // false

Ruslan
Если я пишу foo.bar = 3, то я ожидаю что foo.bar =...

> Потому что > foo.bar = 3; > console.log(foo.bar); // 5 Не нужно так использовать геттер/сеттер

Grigorii K. Shartsev
const a = ref() const b = {} a.value = b console.l...

Ну ссылочные типы и реактивность тут ни при чем абсолютно

Ruslan
Ну ссылочные типы и реактивность тут ни при чем аб...

Ну буквально та же проблема, я присвоил в свойство значение (не вызывал же метод setValue()), беру значение того же свойства и там что-то другое. И норм, никакой чуши. Проблема не в геттерах/сеттерах, а в том как их используют. modelValue Proxy - тоже чушь?

Ruslan
Если я пишу foo.bar = 3, то я ожидаю что foo.bar =...

нууууу если ты науршщаешь контракт то да

Grigorii K. Shartsev
> Потому что > foo.bar = 3; > console.log(foo.bar...

Если ты используешь сеттер то всегда может возникнуть аналогичная ситуацию При вызове явно функции ты получаешь результат, исключение и много других возможностей контроля кода

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Кстати а покупал кто-нибудь ЭЦП для подписи кода? А то у меня на некоторых компах и ОС иногда SmartScreen винды программу за вирус принимал. Если купить такую ЭЦП и подписыват...
Дмитрий Завгородний
15
Карта сайта