背景
过去几个月我一直在使用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'是反模式? –