Из моих ограниченных знаний о том, как выражения оцениваются в JS, в приведенном ниже коде я знаю, что скобки заставляют JS-движок оценивать все, что находится внутри скобок, как выражение ({..})
, поэтому ({..})
это будет оцениваться как объект {...}
, возвращаемый в глобальную область (в данном случае ‹‹ Прав ли я? Пожалуйста, поправьте меня, если нет) или любую другую область действия, в которой находится выражение.
Но чего я не понимаю, так это того, как функция приветствия ({...}).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();
Спасибо