Tôi đã đi du lịch sâu hơn vào thế giới JS và đi qua 3 cách khác nhau tôi có thể phát triển các giỏ frontend của một trang web:Nếu chỉ có một thể hiện của một đối tượng, tôi có nên sử dụng một hàm tạo không?
Constructor với hàm Prototype
var cart = function(){
this.items = {}
}
cart.prototype.increaseItemQty = function(partNumber){
if(this.items[partNumber]){
this.items[partNumber].qty += 1;
} else {
this.items[partNumber] = {
qty : 1
};
}
}
cart = new cart();
Methods Trong Constructor
var cart2 = function(){
this.items = {};
this.increaseItemQty = function (partNumber) {
if(this.items[partNumber]){
this.items[partNumber].qty += 1;
} else {
this.items[partNumber] = {
qty : 1
};
}
}
}
cart2 = new cart2();
Phương pháp Object
var cart3 = {
items : {},
increaseItemQty : function(partNumber){
if(this.items[partNumber]){
this.items[partNumber].qty += 1;
} else {
this.items[partNumber] = {
qty : 1
};
}
}
};
Nếu tôi biết rằng chỉ có một trường hợp của giỏ hàng thì tôi có nên sử dụng phương pháp Object Method
không? Có lý do nào mà tôi vẫn nên sử dụng một nhà xây dựng?
Tại sao 'B.prototype = {...'? Điều đó sẽ không cung cấp cho 'b' bất kỳ phương thức nào mà không cần phải thực hiện' b.prototype.moreStuff() '. Bạn có thể gán các thuộc tính trong đối số thứ hai cho 'Object.create'. –
@squint bạn có thể làm điều đó, nhưng bạn sẽ cần phải sử dụng các bộ mô tả thuộc tính, quá chi tiết cho các trường hợp đơn giản hơn. –
Có, các bộ mô tả thuộc tính là tiết, nhưng theo cách này hay cách khác, bạn cần thay đổi cách bạn cung cấp 'moreStuff' để có thể thực hiện' b.moreStuff() 'thay vì' b.prototype.moreStuff() ' . –