2017-09-07 1 views
0

JavaScript는 실제로 객체의 경우 이상하게 작동합니다. 그것이 올바른 행동인지 잘 모르겠지만.JavaScript 객체는 새 객체에도 이전 값을 저장합니다.

새 Object() 내부에서 객체의 일부 속성을 설정합니다. 다음 번에 새로운 Object()를 다시 할 때, 기본값 대신에 이전 인스턴스에서 설정된 값을 얻습니다. 아하.

5 
10 

나는 그것이 것으로 기대했다 : - -이 :

5 
5 

이유는 예를 아래

명확하게

function testo() {} 

testo.prototype = { 
    obj: { 
    what: { 
     value: 5 
    } 
    }, 
    done: function() { 
    console.log(this.obj.what.value); 
    this.obj.what = {value: 10}; 
    } 
}; 

var x = new testo(); 
x.done(); 
var y = new testo(); 
y.done(); 

문제 위의 코드의 출력입니다 설명? 나는 새로운 Class()를 생성하고 이전 인스턴스에서 'this'를 사용하여 값을 설정했기 때문에 정적이 아니며 그 안에있는 모든 객체의 기본 속성이 표시되어야합니다.

위 예제를 데모로 만들었습니다. 내 도서관에서이 문제에 직면하고 있습니다. 객체와 관련이 있다는 것은 참조로 저장된다는 것을 알고 있습니다.

예상되는 출력을 얻으려면 어떻게해야합니까? 이견있는 사람?

+0

function testo() { this.obj = { what: { value: 5 } }; } testo.prototype = { done: function() { console.log(this.obj.what.value); this.obj.what = { value: 10 }; } }; var x = new testo(); x.done(); var y = new testo(); y.done();

, 프로토 타입의 전체 포인트는 인스턴스가 프로토 타입을 공유하는 것입니다. 그러지 않으려면 프로토 타입 속성을 만들지 마십시오. – JJJ

답변

3

프로토 타입 속성 (모든 인스턴스가 동일한 경우)을 클래스의이 개체로 이동할 수 있습니다.

관련 문제