2012-01-19 8 views
1

コメントが出力されます。これは、javascriptのバグ、バックボーンやその他ですか?バックボーンまたはjavascriptオブジェクトの拡張バグ

var t = Backbone.View.extend({ 
    ben: {}, 
    banana: function(s){ 
     this.ben[s] = s; 
    }, 
    show: function(){ 
     console.info(this.ben) 
    } 
}); 
var c1 = new t(); 
var c2 = new t(); 
c1.banana('1'); 
c1.show(); //Object { 1="1"} 
c2.banana('2'); 
c1.show(); //Object { 1="1", 2="2"} 

答えて

3

コードは期待どおりに動作しています(バグではありません)。 benprototypeに追加されました。

この代わりにやって考えてみましょう:

var t = Backbone.View.extend({ 
    initialize: function (options) { 
     this.ben = {}; 
    } 
    banana: function(s){ 
     this.ben[s] = s; 
    }, 
    show: function(){ 
     console.info(this.ben) 
    } 
}); 
1

これはbenは、「クラス属性」(本当にそこはJavaScriptにはクラスはありませんが、それは1のような役割を果たしていないので)で、バグではありません。

いつでもnew t()を実行すると、同じbenを参照しています。

関連する問題