我正在尝试编写一个小的javascript库,如下所示。我真正想要的是当我打电话
console.log(tnd().pv);
它应该输出相同的数字,而不是每次都生成新的数字。我知道问题是它每次我控制日志时调用Math.random。但是我该怎么做才能输出相同的数字呢?
(function () {
var tnd = function() {
return new tnlib();
};
var tnlib = function() {
this.version = function(){
console.log('1.0');
};
this.pv = Math.random()*10000000000000000;
};
if(!window.tnd) {
window.tnd = tnd;
}
})();
答案 0 :(得分:1)
不要在Math.random()
的每次调用中执行tnlib
,而是作为静态变量执行:
(function () {
function tnd() {
return new tnlib();
}
function tnlib() {
}
tnlib.prototype.version = function(){
console.log('1.0');
};
tnlib.prototype.pv = Math.random()*10000000000000000;
if (!window.tnd) {
window.tnd = tnd;
}
}());
(或者,如果您确实需要使pv
成为实例属性):
var staticPv = Math.random()*10000000000000000;
function tnlib() {
this.pv = staticPv;
…
}