2013-03-05 1 views
0

우리는 다음과 같은 코드가 있습니다자바 스크립트 상속 된 객체가 할당 된 새 데이터 멤버를 만들었습니까?

var Product = function(){ 


    } 
Product.prototype = 
    { 
       GetName: function(){ 
      return this.name; 
     }, 

     name: "something" 
    }; 

var Apparel = function(){ 

    } 

Apparel.prototype = Object.create(Product.prototype); 

var jeans = new Apparel(); 
console.log(jeans.name); 
console.log(jeans.GetName()); 

jeans.name = "Levis"; 
console.log(jeans.name); 
console.log(jeans.GetName()); 

출력 : 뭔가 리바이스 리바이스

그래서 모든 것이 예상대로 작동 뭔가! 하지만, 문제는 우리가 디버거에서 볼 수있는 jeans.name = "Levis"할당을 실행하자마자 두 개의 이름입니다. 하나는 상위 제품 용이고 다른 하나는 의류 용입니다. 그게 메모리 낭비 아닌가요? 이름은 부모의 속성이기 때문에이 속성이 사용되며 새 속성이 만들어지지 않을 것으로 예상됩니다.

이유는 무엇입니까? 내가 입력을 마무리

감사

리 오르는

답변

0

실제로, 나는 대답을 실현 : 같은 방식으로 행동을 실제로 자바 스크립트의 매우 똑똑하다. 제품이 의류 변경에 의해 영향을 받으면 제품 파생 객체의 모든 후속 인스턴스는 파생 객체에 의한 마지막 변경 사항을 전달합니다.

그래서, 그것은 원형 상속 지금 언어

모두 감사합니다, 그 명확한으로 필요합니다. Lior