Hãy xem hai ví dụ trong đó tôi sẽ cố gắng giải thích những gì tôi muốn hiểu.Tạo một lớp JS: IIFE vs nguyên mẫu trả về
var Car = function(){
// Init class
function Car() { };
// Private func/vars
var private = { color:'red' };
// Public func/vars
Car.prototype = {
newColor: function(color) { private.color = color },
getColor: function() { return private.color }
};
return Car.prototype; // return with prototype
};
var myCar = new Car();
Và:
var Car = (function(){
// Init class
function Car() { };
// Private func/vars
var private = { color:'red' };
// Public func/vars
Car.prototype = {
newColor: function(color) { private.color = color },
getColor: function() { return private.color }
};
return Car; // avoid prototype adding parentheses on next line;
})();
var myCar = new Car();
Hãy xem !, Cả lớp được tạo ra như biểu hiện chức năng và cả hai làm việc như nhau. Sự khác biệt duy nhất giữa chúng, là: Việc đầu tiên trả lại chức năng xe với tài sản nguyên mẫu của nó. Các tác phẩm thứ hai trả về chức năng Ô tô, tránh thuộc tính nguyên mẫu và thay vào đó sử dụng IIFE.
Sự khác nhau giữa việc sử dụng return Car.prototype;
và tránh IIFE và sử dụng return Car;
bằng cách sử dụng IIFE (dấu ngoặc đơn ở cuối khai báo lớp).
biết chính xác là bạn đang cố gắng để đạt được? – alex
Tôi đang cố gắng hiểu lý thuyết về cách thức hoạt động chuyên sâu và sự khác biệt về mặt kỹ thuật là gì. –
Bạn có định sử dụng toán tử 'new' với cả hai đối tượng' Car' được trả về không? – alex