背景
過去幾個月我一直在使用OOP風格的Javascript,從解剖開源庫開始。看起來他們大多遵循相同的模式,除了我已經看到了處理私有函數的兩種方法,並且我在想哪個是最好的(最好像最佳實踐一樣,或者因爲我可能不知道的原因而更好)。OOP Javascript:應該將私有函數添加到類原型中嗎?
示例代碼
下面是我正在使用的模式的一個非常簡潔的骨架。如果你會注意到,有兩種不同形式的私人功能。
第一個附屬於原型,如公共功能,但帶有前綴_
。
第二個只是一個功能,它的範圍只能由該類訪問。
(function(window) {
window.FooBarClass = (function() {
var Class = function(params) {
this._init(params);
}
/***************************************/
/************* INITIALIZE **************/
/***************************************/
Class.prototype._init = function(params) {
// DO SETUP STUFF
};
/***************************************/
/********** PUBLIC FUNCTIONS ***********/
/***************************************/
Class.prototype.doThings = function() {
// DO STUFF
};
/***************************************/
/****** PRIVATE FUNCTIONS 1ST WAY ******/
/***************************************/
Class.prototype._createSection = function(params) {
// DO STUFF
};
/***************************************/
/****** PRIVATE FUNCTIONS 2ND WAY ******/
/***************************************/
function correctTwoDigitYear(variable) {
// DO STUFF
}
return Class;
}());
}(window));
問題
哪一個是最好的,爲什麼?
'_init'方法幾乎總是一個反模式。只需在構造函數中使用初始化權限即可。 – Bergi
這取決於您是否希望能夠在閉包之外訪問這些方法。 – Oriol
爲什麼使用'_init'是反模式? –