2010-08-10 53 views
13

sự khác biệt giữaSự khác nhau giữa một lớp và một đối tượng trong Javascript

var myView = function() { 
//something goes here 
}; 

var myView = function() { 
//something goes here 
    return { 
     a: x, 
     b: y 
}(); 

gì tôi nghĩ đoạn đầu tiên tạo ra một lớp "năng động", do đó bạn có thể nói

var anotherView = new myView(); 

và đoạn thứ hai tương tự như đối tượng "động" đơn lẻ, nhưng tôi không chắc lắm.

Trả lời

11

Javascript sử dụng thừa kế nguyên mẫu, do đó, không có lớp học nào. Mọi thứ đều là một đối tượng; nó chỉ là một số đối tượng có một đối tượng cha mẹ chung có phương pháp/biến sẽ được tìm thấy khi độ phân giải tên tìm kiếm chuỗi nguyên mẫu.

Đoạn mã đầu tiên của bạn tạo một đối tượng có tên là myView loại có chức năng. Đoạn mã thứ hai của bạn định nghĩa một phương thức ẩn danh trả về một đối tượng (với hai thuộc tính, ab) và sau đó gọi ngay phương thức này, gán kết quả là myView. Vì vậy, trong trường hợp thứ hai này, myView là một đối tượng có hai thuộc tính tự định nghĩa.

Điều này có thể giúp bạn đọc mô tả của Douglas Crockford về prototypal inheritance in Javascript, vì có vẻ như bạn hơi mờ về chi tiết.

+0

Tôi biết rằng không có lớp nào trong JS, và tôi đã sử dụng thuật ngữ 'lớp' theo nghĩa lỏng lẻo - sai lầm của tôi! Tuy nhiên, đã nói điều đó, cảm ơn bạn đã giải thích. – JamieJag

2

Không có lớp nào trong javascript.

Như bạn đã đề cập, ví dụ đầu tiên của bạn sẽ là đối tượng có thể sử dụng lại, trong khi ví dụ thứ hai của bạn chỉ dành cho một đối tượng đơn lẻ.

Sự khác biệt chính ở đây là bạn gọi hàm đó ngay lập tức trong ví dụ thứ hai và trả về một đối tượng cho bạn, trong khi bạn cần gọi hàm đầu tiên một cách rõ ràng mỗi lần sử dụng một cái gì đó như a=new myView() đó là() lời kêu gọi đó.

tôi sử dụng ví dụ thứ 2 của bạn (được gọi là mô hình mô-đun Crockford) cho một off nhiệm vụ trang liên quan, và ví dụ đầu tiên cho các thành phần tái sử dụng trong trang đó (một số yếu tố tạo ra nhiều lần với bộ xử lý vv)

Cũng đọc về thừa kế protoypal để bạn có thể hiểu cách sử dụng hiệu quả ví dụ đầu tiên để viết mã javascript hoạt động tốt hơn.

+0

ECMA 2015 Giới thiệu lớp học theo js –

Các vấn đề liên quan