En JavaScript, cuando una función devuelve un objeto, ¿por qué se le pega ese objeto como la propiedad de un objeto?

No está claro lo que está preguntando, pero déjame intentar responder.

En primer lugar, a diferencia de las cadenas, los números u objetos booleanos son tipos de referencia en JS.

Por ejemplo en un objeto de matriz

var a = [1,2,3];
var b = a;
a [0] = 4;
console.log (b); // [4, 2, 3]

Entonces, el objeto que está recibiendo a cambio de la ejecución de una función está tratando de hacer referencia al objeto que se declara e inicializa en esa función. Sin embargo, dado que están en diferentes ámbitos, la variable que se asigna al objeto devuelto no puede alcanzar el alcance interno de la función de retorno, se crea un nuevo objeto. Considerar;

función f (n) {
a = [1,2,3];
a [0] = n;
devolver a;
}
var b = f (4); // se crea una copia del objeto interno
console.log (b); // [4,2,3]
f (1); // [1,2,3]
console.log (b); // [4,2,3]

La mayoría de las veces las funciones devuelven otra definición de función que devuelve un objeto privado desde dentro de la función invocada. Esto se llama cierre y así es como se establece una referencia del objeto interno a la variable externa.

función f (n) {
var a = [1,2,3];
a [0] = n;
función return () {return a;}
}
var b = f (4); // se establece una referencia al objeto interno
console.log (b); // function () {return a}
console.log (b ()); // [4,2,3]

No estoy seguro de lo que está preguntando aquí, pero en lo que respecta a los valores de retorno en general:

prueba de función () {return 3; }
prueba(); // 3

función add (num1, num2) {return num1 + num2}
add (prueba (), 2) // 5


Todo esto para decir que si es una función pura, solo se evalúa a cualquier valor de retorno que sea como una asignación variable. No piense en las líneas 2 y 5 anteriores como llamadas a funciones, piense en ellas como los números 3 y 5.