Tôi bắt đầu bằng javascript và đặc biệt với mẫu OOP.Getters và setters trong javascript
Câu hỏi của tôi rất đơn giản. Trong một setter, có cách nào để giữ cùng tên cho tham số và biến lớp private? Tôi đã nhìn khắp mọi nơi nhưng không thể tìm thấy ai đề cập đến nó, chỉ là những ví dụ với các tên khác nhau. Tôi rất cầu kỳ với mã của mình và tôi phải cho nó hai cái tên khác nhau.
Lấy ví dụ từ http://ejohn.org/blog/javascript-getters-and-setters/
function Field(val){
this.value = val;
}
Field.prototype = {
get value(){
return this._value;
},
set value(val){
this._value = val;
}
};
bạn có thể nhìn thấy trong setter tham số là val nhưng tài sản thực sự là giá trị. Vì nó là javascript tôi không thể chỉ đơn giản là làm this.value = value vì "this" sẽ làm cho nó công khai. value = value sẽ tham chiếu cả hai tham số (và sẽ rất lạ). Có thực sự không có cách nào để làm điều này? Nếu không, có bất kỳ "thực hành tốt nhất" cho tình huống này? Tôi đoán dấu gạch dưới có thể hợp lệ nhưng tôi chỉ cầu kỳ nên chỉ muốn đảm bảo không có cách nào khác.
Cảm ơn bạn!
Nguyên mẫu rất đẹp và nhanh. –
Đóng cửa rất thú vị, cảm ơn! Tuy nhiên, câu hỏi đặt ra là sử dụng cùng tên biến trong setter cho tham số và lớp var nhưng trong ví dụ bạn vẫn phải sử dụng các biến khác nhau. Tôi đang khóa cho một cách để sử dụng cùng một tên cho cả hai nếu nó là posible. Một cái gì đó giống như trong java sẽ là biến this.variable (cả hai được gọi là biến nhưng cái đầu tiên đề cập đến biến lớp và biến thứ hai đến tham số – yowie
@AlexWayne Chắc chắn, nhưng bạn không thể khai báo biến "ẩn" trong nguyên mẫu ... ở đây, mẹo là một hàm tạo là một hàm, có một phạm vi biến đổi còn lại trong bộ nhớ sau khi hàm xong, một nguyên mẫu chỉ là một đối tượng, các nguyên mẫu nhanh như thế nào? không phải thời gian – Imp