Как 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);
Кроме метода. Также обратите внимание, что круглые скобки не обязательны в приведенном выше утверждении, но являются обязательными в вашем вопросе.