As we know, we use function and "new" to create objects in Javascript.
var Cat = function() {...};
var cat = new Cat();
However, from the perspective of programming language design, I think it is quite obscure to people's intuition. How do people come up with this design?
(The point is not about the "new" keyword, but syntactically using a "function" to create object, which is obscure. Object is just Object. Why does it have anything to do with a function?)