У меня есть несколько объектов (a, b, c, .. i) в js, созданных, как показано ниже
var a = {x:1};
var b = function(y){this.x = y};
var c = new Object({x:1});
var d = new b(1);
var e = b(1);
var f = (y) => {return {x:y};};
var g = new f(1); // error
var h = f(1);
var i = new a();//error
Пожалуйста, объясните, каковы различия в этих объектах?почему некоторые недействительны?Я ожидаю подробного объяснения, связанного с прототипами в js.