Có vẻ như điều này thay thế đối tượng chức năng bằng cá thể mới
Không, nó không thay thế bất cứ thứ gì. Tên của một biểu thức hàm (đó là những gì bạn có) chỉ có thể truy cập bên trong chính hàm đó, không phải bên ngoài nó. Nó sẽ giống hệt như khi bạn bỏ qua tên:
var myFunc = new function(){};
Nói chung, nếu bạn không muốn các biểu tượng nhất định có thể truy cập, đừng biến chúng thành toàn cầu. Xác định những biểu tượng bên trong một hàm và chỉ trả lại những gì bạn muốn làm cho truy cập, ví dụ:
var myobj = (function() {
function Foo() {};
// do whatever
return new Foo();
}());
Tuy nhiên, nếu bạn chỉ muốn tạo ra một đối tượng duy nhất, nó thường là dễ dàng hơn để sử dụng một đối tượng đen:
var myobj = {};
Không có lý do gì để sử dụng chức năng hàm tạo nếu bạn chỉ muốn tạo một cá thể đơn lẻ từ nó.Nếu bạn muốn thiết lập thừa kế, bạn có thể sử dụng Object.create
[MDN]
Nguồn
2013-04-16 18:09:12
@PeeHaa 埽 Nếu bạn không phải là một anh chàng JS, điều đó không quan trọng nếu bạn thấy lạ đối với bạn nhiều ... Nếu có vẻ lạ đối với nhà phát triển JS , sau đó tôi sẽ quan tâm nhiều hơn –
Thực ra nó có. Bởi vì tôi ở đây để học ... – PeeHaa
@PeeHaa 埽 Sau đó, đây là một bài học? –