Почему геттер напрямую false, а в объекте true?

Для того чтобы полно ответить на ваш вопрос, нам нужно разобраться в некоторых вещах о Vue.js и его особенностях.

Во Vue.js существует понятие вычисляемых свойств (computed properties), которые позволяют создавать геттеры и сеттеры для свойств данных. Геттеры позволяют нам получать значение свойства из компонента, в то время как сеттеры позволяют изменять это значение.

Когда говорят о геттере или сеттере в объекте, обычно имеют в виду использование свойства внутри объекта, как например:

let obj = {
  get someValue() { return true; }
};
console.log(obj.someValue);

Таким образом, при обращении к obj.someValue, геттер будет вызван и вернет значение true.

В Vue.js, чтобы определить геттер для свойства, нужно использовать опцию computed. Например:

new Vue({
  computed: {
    someValue: function() {
      return true;
    }
  }
});

В этом случае, someValue является геттером, который будет возвращать значение true при обращении к этому свойству в компоненте.

Теперь чтобы понять, почему геттер напрямую равен false, а в объекте true, нам нужно рассмотреть контекст использования.

Если говорить о контексте, в котором был задан геттер, то здесь следует уточнить, каким образом вы пытались получить значение геттера напрямую. Если вы сделали это вне контекста компонента Vue или вне опции computed, то это может быть причиной, почему возвращается false. Геттеры Vue.js имеют связь с компонентом и могут возвращать значение только внутри этого компонента.

Однако, если в объекте вы обращались к свойству, определенному как геттер, например obj.someValue, то геттер будет вызван и вернет значение true, так как мы обращаемся к нему в контексте объекта.

Итак, чтобы получить геттер Vue.js вне компонента, вам необходимо прямо обратиться к опции computed внутри компонента Vue или использовать this.$options.computed для доступа к опции computed извне компонента.

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

Надеюсь, это разъяснило ваш вопрос о разнице между геттером, возвращающим false напрямую, и геттером, возвращающим true в контексте объекта в Vue.js.