Câu hỏi này khá mơ hồ. Dự đoán tốt nhất của tôi về ý định của nó là nó đang hỏi về các hàm tạo trong JavaScript. Về mặt kỹ thuật, function Person() {} chỉ là một khai báo hàm bình thường. Quy ước là sử dụng PascalCase cho các hàm được sử dụng làm hàm tạo.
var person = Person() gọi Person dưới dạng một hàm chứ không phải là một hàm tạo. Gọi như vậy là một sai lầm phổ biến nếu hàm được dự định sử dụng như một phương thức khởi tạo. Thông thường, hàm tạo không trả về bất kỳ thứ gì, do đó việc gọi hàm tạo giống như một hàm bình thường sẽ trả về undefined và được gán cho biến dùng để làm instance.
var person = new Person() tạo một instance của đối tượng Person bằng toán tử new, toán tử này kế thừa từ Person.prototype. Một giải pháp thay thế là sử dụng Object.create, ví dụ: Object.create(Person.prototype).
function Person(name) {
this.name = name;
}
var person = Person('John');
console.log(person); // undefined
console.log(person.name); // Uncaught TypeError: Cannot read property 'name' of undefined
var person = new Person('John');
console.log(person); // Person { name: "John" }
console.log(person.name); // "john"