Как JS оценивает выражение ({...}). ObjMethod()?

Из моих ограниченных знаний о том, как выражения оцениваются в JS, в приведенном ниже коде я знаю, что скобки заставляют JS-движок оценивать все, что находится внутри скобок, как выражение ({..}) так ({..}) это будет оценивать объект {...}возвращается в глобальную область видимости (в данном случае << Я прав? пожалуйста, исправьте меня, если нет) или в любой другой области, в которой находится выражение.

Но я не понимаю, как функция приветствия ({...}).greet() оценивается в области / контексте возвращаемого объекта из выражения ({..}). Обычно, по крайней мере, я бы присвоил возвращаемое значение выражения переменной / ссылке на возвращаемый объект, а затем вызвал метод greet() этого объекта, как в

var x = ({...})
x.greet()

затем, как оценивается следующий код.

({
  name: "John Doe",
  data: {
    message: "Hello World"
  },
  greet: function(){
    console.log("I am " + this.name);
    console.log("I have a message for you: " + this.data.message);
  }
}).greet();

Спасибо

1 ответ

Как и следовало ожидать, он просто оценивает объект, а затем вызывает greetметод на нем. Это вот так:

console.log({ foo: 1 }.foo);

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

Другие вопросы по тегам