let o = { a: 123, b: function () { console.log(this, this.a); }, }; (ob)()Al igual que este código, tengo entendido que el código es así:
const b = ob b() // this is pointing to window Pero para (ob)() , this palabra clave apunta al objeto o, ¿por qué?
Poner paréntesis alrededor de una referencia de objeto a una función solo cambiará el this del objeto si hay algo más dentro de los paréntesis que hace que el intérprete primero resuelva el valor dentro de los paréntesis a otra cosa primero (por ejemplo, si usa cualquiera de los operadores , o invocar una función dentro de los paréntesis).
let o = { a: 123, b: function () { console.log(this === window); }, }; // Using comma operator now (0, ob)()Pero si todo lo que tiene es una referencia de método simple en un objeto, sin nada más dentro de los paréntesis, el contexto de llamada no cambia; los paréntesis adicionales alrededor de la referencia no lo cambian.