我是一名經驗豐富的軟件開發人員,並且掌握了大量的語言。我的愛強烈類型的語言,如C++/C#。對於JS,我只知道一些事情,對最佳實踐沒有很好的理解。javascript:字段vs獲取方法
現在,我正在實施幾項功能,並開始使用JavaScript中的「類」開始教育目的。我的一個類看起來如下:
function Position(id, name, posX, posY) {
this._id = id;
this._name = name;
this._poxX = posX;
this._posY = posY;
}
var positions = [
new Position(0, " ", 0, 190),
new Position(1, "GK", 68, 170),
new Position(2, "LB", 25, 155),
new Position(3, "SW", 68, 150),
new Position(4, "RB", 111, 155),
...
];
我打算使用對象的方式是以下幾點:
for (var j = 0; j < positions.length; j++) {
var posJ = positions[j];
posControl.append(new Option(posJ._name, posJ._id));
}
對我來說,JS是知道很多「黑客」(如分配方法)和我絕不會在C++或C#中編寫類似的東西,但在JS中...
問題:我應該爲「_name」和「_id」或JS中的字段創建getter嗎?可以讓它們公開訪問並按我的計劃使用?
任何有關JS代碼風格的建議都非常受歡迎!
非常感謝您的反饋!
P.S.在獲得了一些經驗後,我想出了正確的方法:
function Position(id, name, posX, posY) {
var _id = id;
var _name = name;
var _poxX = posX;
var _posY = posY;
this.getId = function() { return _id; };
this.getName = function() { return _name; };
}
這種方式不僅提供getters/setters,它也使變量私人。
我會把這個寫入「答案」,但問題被擱置。
P.P.S.大概問題應該改成「如何讓班級成員私人化」,但是在撰寫問題的那一刻我確信這在JS中是不可能的:)
爲了簡化代碼,請將它們保留爲公共屬性。但是getters/setter給你更多的靈活性,因爲你可以在將值傳遞給調用者之前進行處理。這是你的電話。 – Joseph
您是唯一可以決定是否可以公開訪問數據的人。有些人喜歡用「或」兩個下劃線前綴「放手」屬性名稱。 –
可能更適合codereview.se(如果他們想要的話)。 –