在Douglas Crockford的“JavaScript:The Good Parts”中,有一个使用函数和闭包来封装模块的例子。根据以下说明独特应包含“Q1000”。我希望此模块模式能够正常工作,但前缀和seq似乎不会被更改,因为唯一在运行此示例时会产生“0”。可能是什么原因?闭合模块封装
var serial_maker = function() {
// Produce an object that produces unique strings. A
// unique string is made up of two parts: a prefix
// and a sequence number. The object comes with
// methods for setting the prefix and sequence
// number, and a gensym method that produces unique
// strings.
var prefix = '';
var seq = 0;
return {
set_prefix: function (p) {
prefix = String(p);
},
set_seq: function (s) {
seq = s;
},
gensym: function() {
var result = prefix + seq;
seq += 1;
return result;
}
};
};
var seqer = serial_maker();
seqer.set_prefix = ('Q');
seqer.set_seq = (1000);
var unique = seqer.gensym(); // unique is "Q1000"
你覆盖'SET_ *'功能,不称他们。 – 2014-10-01 11:40:13