2017-03-03 82 views
1

所以我在阅读“Javascript The Good Parts”。
有这个部分,我无法得到它的工作。
它在第4章模块。
返回“0”而不是“Q1000”。Javascript模块模式错误结果

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

'seqer.set_prefix =( 'Q')' - >'seqer.set_prefix( 'Q')'你需要的函数调用,而不是赋值 –

+0

你尝试用'obj.method =('value')'覆盖该方法,不要使用它'obj.method('value')'。尤里是对的 – mtizziani

+0

没错。在这本书的例子中可能有一些错误。 – resting

回答

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());

0

set_prefixset_seq的乐趣ctions,所以应该被称为功能

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());