En JavaScript, n'importe quelle fonction légale peut être utilisée comme constructeur d'un objet, y compris à la fois les fonctions intégrées au système et les fonctions définies par l'utilisateur. Une fois qu'une fonction est exécutée en tant que constructeur, son attribut interne this fera référence à la fonction elle-même.
De manière générale, les constructeurs n'ont pas de valeur de retour, ils initialisent simplement l'objet transmis par le pointeur this et ne renvoient rien. Si une fonction renvoie une valeur, l'objet renvoyé devient la valeur de la nouvelle expression. D'un point de vue formel, la seule différence entre le fait qu'une fonction soit exécutée en tant que constructeur ou en tant que fonction ordinaire est de savoir si l'opérateur new est utilisé.
La description ci-dessus a en fait une signification plus précise, qui divise la situation où la fonction renvoie une valeur en deux situations : la valeur de retour de la fonction est un type référence et un type valeur.
Si la valeur de retour d'une fonction est une donnée d'un type référence (tableau, objet ou fonction), alors lorsque la fonction est construite en utilisant l'opérateur new comme constructeur, le résultat de l'opération sera remplacé par sa valeur de retour. À ce moment, la valeur this dans le corps du constructeur est perdue et remplacée par l'objet renvoyé. Par exemple :