Javascript模块模式错误的结果

时间:2017-03-03 07:23:22

标签: javascript

所以我正在阅读“Javascript The Good Parts” 这部分我无法让它发挥作用 它在第4章,模块中 返回“0”而不是“Q1000”。

var serial_maker = function () {
  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);
console.log(seqer.gensym()); 

2 个答案:

答案 0 :(得分:0)

你的错误就在这些方面 -

seqer.set_prefix = ('Q');
seqer.set_seq = (1000);

var serial_maker = function () {
  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);
console.log(seqer.gensym()); 

答案 1 :(得分:0)

set_prefixset_seq是函数,因此应该作为函数调用

var serial_maker = function () {
  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);
console.log(seqer.gensym());