背景
在过去的几个月里,我一直在使用 OOP 风格的 Javascript,从剖析开源库开始。看起来他们大多遵循相同的模式,除了我已经看到两种处理私有(private)函数的方法,我想知道哪种是最好的(最佳实践中最好,或者由于我可能不知道的原因更好)。
示例代码
下面是我正在使用的模式的一个非常精简的框架。如果您注意到,有两种不同形式的私有(private)函数。
第一个像公共(public)函数一样附加到原型(prototype),但以 _
为前缀。
第二个只是一个作用域只能由类访问的函数。
(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));
问题
哪一个更好,为什么?
最佳答案
JS 实际上并没有私有(private)方法,尽管如您所见,您可以通过关闭作用域来限制对函数和变量的访问。
最后,如果它在原型(prototype)上,它就不是私有(private)的——不管命名约定如何(前导下划线等)。因此,如果您真的想限制对某些东西的访问,请不要将它放在原型(prototype)上。
关于javascript - 面向对象的Javascript : Should Private Functions Be Added to Class Prototype?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38677106/