2012-01-19 2 views
1

설명이 출력됩니다. 이것은 자바 스크립트 버그, 백본 또는 다른 무엇입니까?백본 또는 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는 "클래스 속성"입니다 (정말이 자바 스크립트에는 클래스가 없지만, 그것은 하나 같은 역할을하기 때문).

new t()을 할 때마다 동일한 ben을 참조합니다.