Avatar ·

O que a palavra-chave `new` faz em JavaScript? Explique com exemplos

Olá a todos! Estou começando a aprender JavaScript e me deparei com a palavra-chave `new`. Para ser honesto, estou confuso. Acho que entendo que está relacionada à criação de objetos, mas como exatamente funciona não está claro.\n\nPor exemplo, vejo este código:\n\n```javascript\nfunction Person(name) {\n this.name = name;\n this.sayHello = function() {\n console.log('Olá, meu nome é ' + this.name);\n };\n}\n\nconst user = new Person('Anna');\nuser.sayHello(); // Olá, meu nome é Anna\n```\n\nMas se eu escrever sem `new`:\n\n```javascript\nconst user = Person('Anna');\nconsole.log(user); // undefined\n```\n\nPor que isso acontece? O que exatamente o `new` faz internamente? Ouvi dizer que ele de alguma forma vincula o `this`, mas não entendo os detalhes.\n\nTambém vi que em alguns tutoriais escrevem funções construtoras com