2014-10-14 2 views
0

enter image description here자바 스크립트 프로토 타입은 문제가

나는 동적으로 자바 스크립트에서 생성자의 프로토 타입을 변경하는 행동에 대해 단지 호기심 유발한다. 그리고 나는 위의 결과를 얻었다.

이미 생성 된 인스턴스가 "새로운"프로토 타입의 속성을 공유하지 않는 것 같습니다.

단순히 그러한 디자인을 선택했는지 궁금합니다. 왜냐하면 인스턴스가 "새로운"프로토 타입의 속성을 공유 할 것으로 예상했기 때문입니다. 감사!

+0

_ 변형 _ 생성자가 공유하는 프로토 타입 객체와 인스턴스가 둘 다에 전파됩니다. _Replacing_ 생성자의 프로토 타입 객체가 다른 객체와 바꾸면 이미 생성 된 인스턴스가 업데이트되지 않습니다. –

+0

감사! 지금은 분명합니다. 그게 어떻게 작동하는지 :) – SSDong

답변

4

개체가 생성되면 해당 프로토 타입 참조가 생성자 함수의 prototype 속성 값에 따라 설정됩니다. 나중에 생성자 속성이 값을 변경하면 이미 생성 된 객체는 영향을받지 않습니다.

그것이 작동하는 방식입니다.

그래, 문제가 발생할 수 있습니다. 나는 당신이 그것을 약간의 목적을 위해 이용할 수 있다고 생각하지만 그것은 꽤 이상 할 것이다.

+0

설명 주셔서 감사합니다! 네, 그냥 받아 들일 것입니다. 프로토 타입에 동적으로 메서드를 추가하면 인스턴스에 영향을 미치기 때문에 다소 놀랍습니다. 하지만 프로토 타입을 변경하면 작동하지 않는 것 같습니다. – SSDong

+0

'test .__ proto__'를 체크하면 그 객체는 스왑 이전의 프로토 타입이라고 볼 수 있습니다. '__proto__' 프라퍼티는 인스턴스가 프로토 타입에 대한 참조를 저장하는 장소입니다. –

+0

'__proto__'는 저에게 현재 프로토 타입을주고 있습니다. 그러나 .prototype은 스왑 이전의 이전 프로토 타입을 참조하고 있습니다. – SSDong

관련 문제