🍦 JavaScript - Private Properties
Updated at 2013-04-28 12:21
You can define private properties in JavaScript constructors. Note that you cannot access these in any way that I know of, thus you cannot extend the functionality. This means that the pattern is good for prototypes and small components but not usable for frameworks, plugins or modules.
function Ninja() {
// Private properties, cannot be accessed outside.
var _slices = 0;
// Public getter for private property.
this.getSlices = function() {
return _slices;
};
// Public setter for private property.
this.slice = function() {
_slices++;
};
}
var ninja = new Ninja();
ninja.slice();
console.assert(
ninja._slices === undefined,
'Private data is inaccessible to us.'
);
console.assert(
ninja.getSlices() === 1,
'We are able to access the internal slice data with accessor function.'
);