2017-03-03 38 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());