使用下面的模塊,我如何添加不公開的函數?這不是揭示模塊。假設我不想公開發行?不要說這是正確的,因爲卷是有用的。但如何隱藏它?JavaScript模塊私有函數
/* global module */
module.exports = (function() {
'use strict';
var random;
function Dice(random) {
this.init(random);
}
Dice.prototype.init = function (random) {
this.random = random || Math.random
};
Dice.prototype.d20 = function() {
var max = 20;
var min = 1;
return this.roll(min, max);
};
Dice.prototype.d6 = function() {
var max = 6;
var min = 1;
return this.roll(min, max);
};
Dice.prototype.roll = function(min, max) {
return Math.floor(this.random() * (max - min)) + min;
};
return Dice;
}());
試試這個:'函數輥(最小值,最大值){返回Math.floor(this.random()* (max - min))+ min; };' – styfle
這就是*揭示原型模式。不知道爲什麼你認爲你不能在那裏聲明一個函數?看看[這裏](例如,https://stackoverflow.com/questions/9248655/how-to-implement-inheritance-in-js-revealing-prototype-pattern/9321429#9321429)。 – Bergi
你應該省略IIFE。在Commonjs模塊中,整個模塊都有自己的範圍。所以只需將所有內容直接放入文件中,而不進行任何包裝。然後在最後分配'module.exports = Dice'。 – Bergi