Tôi mới vào javascript và bây giờ nghiên cứu nó ...Hai cách khác nhau để làm cho các đối tượng javascript
var person = function() {
this.name = "name"
};
var person2 = function() {
var obj = {};
obj.name = "name";
return obj;
};
Giả sử chúng ta có hai chức năng hiển thị ở trên. Dường như các đối tượng có thể được tạo bằng cách sử dụng một trong hai hàm. Ví dụ)
var p = new person();
var p2 = new person2();
Câu hỏi của tôi là: Sự khác biệt giữa người vs person2 là gì? Họ có giống nhau không? Nếu không phải cái nào là cách thích hợp hơn để sử dụng?
Cảm ơn
Hàm đầu tiên là hàm khởi tạo, hàm thứ hai chỉ là một hàm trả về một đối tượng và cũng có thể được gọi mà không có 'new'. Có một sự khác biệt, điều này sẽ trở nên rõ ràng hơn khi bạn đọc về 'mới': https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new. –
@FelixKling Ngoại trừ nó * được * gọi là 'mới', thay đổi mọi thứ. –
@Andrew: Không thực sự vì chức năng * rõ ràng * trả về một đối tượng. Gọi nó có hoặc không có 'mới' sẽ không tạo ra sự khác biệt. (Tất nhiên nó tạo ra sự khác biệt cho đến nay 'this' sẽ tham chiếu đến các giá trị khác nhau bên trong hàm, nhưng nó không tạo sự khác biệt cho kết quả của lời gọi hàm). –